三个数求加法组合的问题

题目:
有 1,2,5三个数字 每个数字可以有任意多

问题:
求用这三个数字加法组合成10的方案 如 5+5 2+2+2+2+2

给分原则: 程序效率最优的给的最多,其次是能回答上来的


解答: 可看作一个三元一次方程来解,代码如下:
           
  printf("\r\n  1   2   5");
  printf("\r\n");
  for (int i=0; i<(10/1+1); i++)
  {
   for (int j=0; j<(10/2+1); j++)
   {
    for (int k=0; k<(10/5+1); k++)
    {
     if (i*1 + j*2 + k*5 == 10)
     {
      printf("\r\n  %-2d  %d   %d", i, j, k);
     }
    }
   }
  }
  getchar();

 

             稍作优化:
   for (int i=0; i<(10/1+1); i++)
  {
   for (int j=0; j<((10-i*1)/2+1); j++)
   {
    for (int k=0; k<((10-i*1-j*2)/5+1); k++)
    {
     if (i*1 + j*2 + k*5 == 10)
     {
      printf("\r\n  %-2d  %d   %d", i, j, k);
     }
    }
   }
  }

PS:
    跳槽到新的公司后,由于研发区不能上网已经很久没来csdn逛了,整天对着芯片的一堆堆寄存器手册真是很晕,感觉VC++编程的一些东西变得有点陌生了,怀念原来做应用程序软件的时候啊;
    以后还是要尽量来csdn逛逛,解放一下脑袋,放松放松,尝试一下写写博客,呵,落伍的很啦;
    在论坛里看到有人问上述题目,顺便做了发上来,权当博客开篇吧

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值