c语言1到9组成三位数的比123,习题2-10 排列,用1,2,3,...,9组成3个三位数abc, def, ghi, 每个数字恰好使用一次...

博主分享了如何通过C语言和枚举法解决经典算法书籍中的习题,要求用1-9组成三个三位数abc, def, ghi,使得abc: def: ghi = 1: 2: 3。展示了代码实现并强调了数字使用次数的验证。
摘要由CSDN通过智能技术生成

最近开始了看算法经典入门,这本书真的讲得很生动有趣,后面的二叉树、图等结构的解析也很到位,在看的过程中不知不觉就学了很多c语言的知识。需要好好消化这本书。

习题2-10 排列,用1,2,3,...,9组成3个三位数abc, def, ghi, 每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。

采用枚举的方法做这道题,我们可以知道,1-9的总和SUM以及总积PROD是一定的。

#include

void result(int num, int &resAdd, int &resMul){

int i,j,k;

i=num/100;

j=num/10%10;

k=num%10;

resAdd+=i+j+k;

resMul*=i*j*k;

}

int main(void) {

const int SUM=45, PROD=1*2*3*4*5*6*7*8*9;

int resAdd, resMul, j,k;

for(int i=123; i<=329; i++){

j=i*2;

k=i*3;

resAdd=0, resMul=1;

result(i,resAdd,resMul);

result(j,resAdd,resMul);

result(k,resAdd,resMul);

if(resAdd==SUM && resMul==PROD)

printf("%d, %d, %d\n",i,j,k);

}

}

- 其中,i:j:k=1:2:3。循环条件中,123为1-9能组合的最小值,329为最大值987/3的结果

- result的作用是计算每次循环的 和resAdd & 积resMul,用于判断是否每个数字恰好使用一次。

勿忘初心。

2019/5/9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值