for(int i=123;i<=543;i++)
{
if((i的个位、十位、百位中有两个相同)||(i的个位、十位、百位中有一个大于5或者小于1)
continue;
}这样应该差不多吧,你试试。
{
if((i的个位、十位、百位中有两个相同)||(i的个位、十位、百位中有一个大于5或者小于1)
continue;
}这样应该差不多吧,你试试。
解决方案 »
- [顶着有分]由于项目需要VS2010,ATL,COM。咨询快速学习路径
- 请教一下,有个自定义数据类型,不胜感谢 。
- 关于加载dll的问题
- 为什么用raw socket接收ICMP数据失败?请各位高手看先!!
- 大侠救急, vc编译好的程序不能运行,问题不能解决。急急急!!
- 小弟想考软件所的研究生,不知道有没有软件所的兄弟?重分相送!!!
- HELP!!关于单选按钮的问题~~~~[急救]
- 请问怎样才能在列表视图控件(ListCtrl)中查找数据,我用的是报表模式(REPORT),在线等待,回答有分
- wxwidgets链接出现的错误
- AfxMessageBox(buffer)是什么意思?
- 在文档类的构造函数中打开数据库出现"建立空文档失败“错误,应该怎么解决?
- InstallShield在什么地方呀?怎么用呀?
第一个, 列出 从给定的五个数中取出三个(组合问题) 的所有情况
第二个, 列出对给定的三个数进行排列的所有情况函数实现:第一个函数://从 5 个数字中选出 3 个的组合
// 5 个数字保存在数组 arrayM 中( 此处认为arrayM中的数字不相同 )
bool Select3from5(long arrayM[] )
{
const long M=5;
const long N=3;
long i,j ,k;
//开辟一个数组用来存储每次选出的那 3 个数字
long * arrayN = new long[3];
//从第一个元素开始循环
for(i =0;i<= M-N;i++)
{
arrayN[0] = arrayM[i] ;
for( j = i + 1 ; j <= M - N + 1 ; j++)
{
arrayN[1] = arrayM[j] ;
for( k = j + 1 ; k <= M - N + 2 ; k++)
{
arrayN[2] = arrayM[k] ;
printf("%d\t%d\t%d\n",arrayN[0], arrayN[1],arrayN[2]); }//end for k
}//end for j
}//end for i
delete [] arrayN; return TRUE;
}
如何列出所有 从M 个数字的数组 arrayM 中 选出 N 个数字的情况?我已经用函数递归的方法实现了,我想看看别的非递归的方法.
bool Permutation(const long arrayN[] )
{
const long N =3;
long i,j ,k ;
//开辟一个数组用来存储每次排列以后的 数字
long * arrayN2 =new long[N];
//都先给arrayN2赋值为arrayN
for( k =0 ; k < N; k++ )
arrayN2[k] = arrayN[k];
//打印未交换之前的排列
printf("%d\t%d\t%d\n", arrayN2[0],arrayN2[1],arrayN2[2]);
//以下采用两两交换的方法求出所有排列
for( i = 0; i< N - 1 ; i++)
{
for( j = i + 1 ; j< N ; j++)
{
//每次都先给arrayN2赋值为arrayN
for( k =0 ; k < N; k++ )
arrayN2[k] = arrayN[k];
//交换 arrayN2 的 i, j 元素
long t = arrayN2[i] ;
arrayN2[i] = arrayN2[j] ;
arrayN2[j] = t;
//打印
printf("%d\t%d\t%d\n", arrayN2[0],arrayN2[1],arrayN2[2]);
}
}
delete [] arrayN2;
return TRUE;
}
#include "stdio.h"
int List[5]={1,2,3,4,5};
void Swap(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
void Perm(int List[],int k,int m)
{
int i;
if(k==m)
{for(i=0;i<m;i++)
printf("%d",List[i]);
printf("%c",'\n');
}
else
for(i=k;i<m;i++)
{
Swap(List[k],List[i]);
Perm(List,k+1,m);
Swap(List[k],List[i]);
}
}
int main(int argc, char* argv[])
{
for(int i=0;i<3;i++)
Perm(List+i,0,3);
}
123
132
213
231
321
312
234
243
324
342
432
423
345
354
435
453
543
534
#include "stdio.h"
int List[5]={1,2,3,4,5};void Swap(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
void Perm(int List[],int k,int m)
{
int i;
if(k==m)
{for(i=0;i<m;i++)
printf("%d",List[i]);
printf("%c",'\n');
} for(i=k;i<5;i++)
{
Swap(List[k],List[i]);
Perm(List,k+1,m);
Swap(List[k],List[i]);
}
}void main(int argc, char* argv[])
{ Perm(List,0,3);}
123
124
125
132
134
135
143
142
145
153
154
152
213
214
215
231
234
235
243
241
245
253
254
251
321
324
325
312
314
315
341
342
345
351
354
352
423
421
425
432
431
435
413
412
415
453
451
452
523
524
521
532
534
531
543
542
541
513
514
512
60种
#include "stdafx.h"
#include "stdio.h"
int List[5]={1,2,3,4,5};void Swap(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
bool judg()
{
if(List[0]>List[1])return false;
if(List[0]>List[2])return false;
if(List[1]>List[2])return false;
return true;
}
void Perm(int List[],int k,int m)
{
int i;
if(k==m&&judg())
{for(i=0;i<m;i++)
printf("%d",List[i]);
printf("%c",'\n');
} for(i=k;i<5;i++)
{
Swap(List[k],List[i]);
Perm(List,k+1,m);
Swap(List[k],List[i]);
}
}void main(int argc, char* argv[])
{ Perm(List,0,3);}
123
124
125
134
135
145
234
235
245
345