第1个回答 2012-02-22
#include "stdafx.h"
#include<math.h>
#include<time.h>
int a[9],flag=0;
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=123;i<=329;i++)
{
flag=0;
a[0]=i/100;
a[1]=i/10%10;
a[2]=i%10;
a[3]=i*2/100;
a[4]=i*2/10%10;
a[5]=i*2%10;
a[6]=i*3/100;
a[7]=i*3/10%10;
a[8]=i*3%10;
for(int j=0;j<9;j++)
for(int k=j+1;k<9;k++)
if(a[j]==a[k])
{
flag=1;
break;
}
if(flag==0)printf("%d %d %d\n",i,i*2,i*3);
}
printf("Time used=%.21f\n",(double)clock()/CLOCKS_PER_SEC);
return 0;
}
楼上的前半部分的思路是对的,后面可能出现了问题,正确答案是这9个数都不能相同。
我测试了一下和算法竞赛入门经典的习题答案,发现本答案运行时间远小于。
第2个回答 2011-05-25
用1,2,3,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解
138:276:414
139:278:417
143:286:429
148:296:444