最简单的:
for()
{
for()
{
for()
{
for()
{
for() {}
}
}
}
}
for()
{
for()
{
for()
{
for()
{
for() {}
}
}
}
}
解决方案 »
- 各位大侠进来解答下,关于OnCtlColor的问题
- 怎么用sdk实现下面这个功能
- 想用VC编写SNMP客户与SNMP服务器通讯,请推荐些snmp入门教材,谢谢。
- 在线等待!立即给分!一个串如“c:\\window\\here.txt”,用哪个API函数可以解析出来文件名here.txt呢?我忘了
- 怎样把Tchar 转换成 int
- 高份征集, 哪位老兄有 类似 微软 画图板的源代码, 烦请发给我一份。可以再加一百分
- 象word那样的表格设计大概是怎么实现的呀
- Socket recv WSAGetLastError()= 10053;
- 巨简单的问题,请问怎么样才能和一个FTP服务器建立连接?Windows怎么样才算是个FTP服务器?
- 有没有人会破OICQ的"神目"隐身查询功能软件的注册码?
- 怎么在一个CString中查找最后一个符合要求字符串的位置?
- 高分相送!SQLExecDirect中执行insert语句后怎样得知记录是否插入数据库中!先回答先给,急!!!
/**********************************************************
* This source program is to find the all combinations *
* of several numbers,for example,numbers 0 to 9. *
* Author:An Xiangbin,2001-8-19,Email:[email protected] *
**********************************************************/
#include <conio.h>
#include <stdio.h>
#define N 9
int a[N+1];
long count=0;void init(int *a,int n);
void print(int *a,int n);
void work(int *a,int n);
void swap(int *p,int *q);
void sort(int *a,int alen);void init(int *a,int n){
int i;
for(i=0;i<n+1;i++) a[i]=i;
}
/**************************************
* Sort a array,length(array)=alen *
**************************************/
void sort(int *a,int alen){
int *p,*q,*k;
for(p = a;p < (a+alen-1);p++){
k = p;
for(q=p+1;q<a+alen;q++)
if(*p > *q) k = q;
if(k!=p)swap(p,k);
}
}
/**************************************************
* get the all combinations of these numbers *
**************************************************/
void work(int *a,int n){
int p,i,j,k,t,flag=0; p=n;
while(p>0){
flag = 0;
j = p;
for(i=n;i>p;i--)
if(a[i] > a[j]) {
flag = 1;
break;
}
if(flag){
swap(&a[j],&a[i]);
sort(a+j+1,n-j);
count++;
print(a,n);
for(i=j;i<=n;i++)
if(a[i]<a[i+1])p++;
}
else p--;
}
}void swap(int *p,int *q){
int t;
t = *p;
*p = *q;
*q = t;
}void print(int *a,int n){
int i;
for(i = 1;i < n+1;i++)
printf(" %d",a[i]);
printf("\n");
getch();
}void main(void){ clrscr();
printf("\nPress any key to begin...\n");
getch();
init(a,N);
count=1;
print(a,N);
work(a,N);
printf("total solution is %ld: ",count);
getch();
}
/********************************************
numbers are 1,2,3
Press any key to begin...
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
total solution is 6:
int i,j,k,m,n ,t=0;
for (i=1;i< 6 ; i++)
for (j=1 ; j<6 ; j ++ )
if( j <> i ){
for ( k = 1 ;k<6;k++)
if ( k <> i && k <> j ){
for ( m = 1; m <6 ; m ++ )
if ( m <> k && m <> j && m<> i ){
for ( n =1 ; n < 6 ; n ++ )
if( n<>m && n <>k && n<>j && n <> i) {
printf("solution[%d]:%d ,%d ,%d ,%d ,%d ,%d\n",
t++,i,j,k,m,n);
}
}
}
}
呵呵,如果是1-20呢?好象写出来没人能看明白了吧!