用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解c 用1,2,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:输出所有解
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 22:01:42
![用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解c 用1,2,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:输出所有解](/uploads/image/z/664113-57-3.jpg?t=%E7%94%A81%7E9%E7%BB%84%E6%88%903%E4%B8%AA%E4%B8%89%E4%BD%8D%E6%95%B0%2C%E6%AF%8F%E4%B8%AA%E6%95%B0%E5%AD%97%E4%BD%BF%E7%94%A8%E4%B8%80%E6%AC%A1%E4%BD%BF%E5%BE%97abc%EF%BC%9Adef%EF%BC%9Aghi%3D1%3A2%3A3%2C%E8%BE%93%E5%87%BA%E6%89%80%E6%9C%89%E8%A7%A3c+%E7%94%A81%2C2%2C%E2%80%A6%E2%80%A69%E7%BB%84%E6%88%90%E4%B8%89%E4%B8%AA%E4%B8%89%E4%BD%8D%E6%95%B0abc%EF%BC%8Cdef%E5%92%8Cghi%EF%BC%8C%E6%AF%8F%E4%B8%AA%E6%95%B0%E5%AD%97%E6%81%B0%E5%A5%BD%E4%BD%BF%E7%94%A8%E4%B8%80%E6%AC%A1%EF%BC%8C%E8%A6%81%E6%B1%82abc%EF%BC%9Adef%EF%BC%9Aghi%3D1%3A2%3A%E8%BE%93%E5%87%BA%E6%89%80%E6%9C%89%E8%A7%A3)
用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解c 用1,2,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:输出所有解
用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解
c 用1,2,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:输出所有解
用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解c 用1,2,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:输出所有解
abc:def:ghi
138:276:414
139:278:417
143:286:429
148:296:444
1⑥4:328:492
176:352:528
178:356:534
179:358:537
182:364:546
186:372:558
192:384:576
218:436:654
219:438:657
238:476:714
239:478:717
273:546:819
293:586:879
314:628:942
327:654:981
329:658:987
又补充了提问.我就不贴代码了.算法思路就是
从i = 123到i = 987/3 做循环
{
算出i*2、i*3的值
把这三个数的各位共9个数字,加上一个0,放入一长度为10的数组.
设置一个布尔值 = 1
从 k = 0 到 9循环
{
设置一个值F=0
从数组1到10循环
{
某位 == k,则F=F+1
如果F = 2,跳出该循环
}
如果F = 2,布尔值=0,跳出循环
}
如果布尔值 = 1,这个i符合,按格式输出i、i*2、i*3
}
176:352:528 178:356:534 186:372:558 192:384:576 179:358:537 182:364:546
用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
#include "stdafx.h"
#include
#include
int a[9],flag=0;
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=123;i<=329;i++)
{
flag=0;
a[0]=i/100;<...
全部展开
#include "stdafx.h"
#include
#include
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个数都不能相同。
我测试了一下和算法竞赛入门经典的习题答案,发现本答案运行时间远小于。
收起