算法竞赛入门,关于排列数的一些题目代码。

 
  

 /*将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。*/

/*排列简易版P35 1-9各个数字恰好使用一次,组成3个三位数,输出满足abc:def:ghi=1:2:3*/
#include
int main()
{
  int count=0,m,n,x;
  int p,q;  
  for(int a=1; a<10; a++)//使用暴力枚举…… 递归又不会,只能靠暴力OJ超时维持生活这样子。 
    for(int b=1; b<10; b++)  
	    for(int c=1; c<10; c++)  
 	    	for(int d=1; d<10; d++)  
                for(int e=1; e<10; e++)  
	                for(int f=1; f<10; f++)  
                       for(int g=1; g<10; g++)  
                            for(int i=1; i<10; i++)  
                               for(int j=1; j<10; j++)
                                   if(a!=b && a!=c && a!=d && a!=e && a!=f && a!=g && a!=i && 
								   a!=j && b!=c && b!=d && b!=e && b!=f && b!=g && b!=i && b!=j 
								   && c!=d && c!=e && c!=f && c!=g && c!=i && c!=j && d!=e && d!=f
								    && d!=g && d!=i && d!=j && e!=f && e!=g && e!=i && e!=j && f!=g
									 && f!=i && f!=j && g!=i && g!=j && i!=j)
                                   { 
                                   	m=a*100+b*10+c;
                                   	n=d*100+e*10+f;
                                   	x=g*100+i*10+j;
                                   	if(m*2==n && m*3==x)
                                   		printf("%d %d %d\n",m,n,x);
                                   }
	return 0;
 } 

你可能感兴趣的:(a)