用1~9组成3个三位数,每个数字使用一次使得abc:def:ghi=1:2:3,输出所有解

c语言题目:用1,2,3,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解... c 语言题目:用1,2,3,……9组成三个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解 展开
niminrenshi
2011-05-16 · TA获得超过5.9万个赞
知道大有可为答主
回答量:6291
采纳率:94%
帮助的人:4268万
展开全部
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
}
gh1232008
2012-02-22
知道答主
回答量:7
采纳率:100%
帮助的人:1.1万
展开全部
#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个数都不能相同。
我测试了一下和算法竞赛入门经典的习题答案,发现本答案运行时间远小于。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东监为之神5307
2011-05-25 · TA获得超过7万个赞
知道大有可为答主
回答量:5.4万
采纳率:0%
帮助的人:8154万
展开全部
176:352:528
178:356:534
186:372:558
192:384:576
179:358:537
182:364:546
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式