| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14091 人关注过本帖
标题:将100换成1元,5元,10元的零钱有多少种换法?
只看楼主 加入收藏
信管
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:14 
将100换成1元,5元,10元的零钱有多少种换法?
怎么编这个程序
将100换成1元,5元,10元的零钱有多少种换法?
2016-04-09 11:45
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:10 
程序代码:
#include<stdio.h>
#define m_100 100
#define m_10 10
#define m_5 5
#define m_1 1

main()
{
  int i,j,k,n=0;
  for(i=1;i<100;i++)
   for(j=1;j<20;j++)
     for(k=1;k<10;k++)
       if(i*m_1+j*m_5+k*m_10==m_100)
         n++;
  printf("%d\n",n);
}

未佩好剑,转身便已是江湖
2016-04-09 12:45
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:1 
我路过的,问一下楼上连续用了3个for语句,请问该循环怎么执行?
2016-04-09 16:55
x404710433
Rank: 1
等 级:禁止访问
帖 子:4
专家分:6
注 册:2016-3-6
收藏
得分:3 
穷举法,先是全部换一块的,然后一块换两块的。然后在换五块的。11111111111111111121111112211112221122222222211111511125122555 或者设可换5元x张,2元y张,1元z张。得5x+2y+z=10因为x,y,z均为非负整数所以得x=1,y=1,z=3;x=1,y=2,z=1;x=1,y=0,z=5;x=2,y=0,z=0;x=0,y=1,z=8;x=0,y=2,z=6;x=0,y=3,z=4;x=0,y=4,z=2;x=0,y=5,z=0;x=0,y=0,z=10.答:共10种

2016-04-09 17:30
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
回复 3楼 _Strike
最内层的先执行,依次往外
收到的鲜花
  • _Strike2016-04-09 20:38 送鲜花  2朵  

未佩好剑,转身便已是江湖
2016-04-09 18:08
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:1 
回复 5楼 alice_usnet
噢噢
2016-04-09 20:38
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:1 
回复 4楼 x404710433
为什么运行2楼的程序结果是81种呢呢
2016-04-09 21:21
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:1 
回复 2楼 alice_usnet
你的做法 漏算了
全部都是 一元
全部都是 五元
全部都是 十元

之类的情况

应该算错了

https://zh.
2016-04-11 13:34
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:2 
程序代码:
#include <stdio.h>
int foo(int n, int cur)
{
    if(n == 0)
        return 1;
    int arr[] = { 1, 5, 10 };
    int count = 0;
    for(int i = cur; i < sizeof arr/sizeof *arr; ++i)
    {
        if(n >= arr[i])
        {
            count += foo(n - arr[i], i);
        }
    }
    return count;
}
int main(int argc, char *argv[])
{
    printf("%d\n", foo(100, 0));
    return 0;
}
计算结果是 121

https://zh.
2016-04-11 13:52
信管
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-9
收藏
得分:0 
回复 2楼 alice_usnet
一下子 豁然开朗了  谢谢
多问一下  我是大一的  刚开始学c语言
能给一些学习经验 技巧给我吗 谢谢
2016-04-11 16:57
快速回复:将100换成1元,5元,10元的零钱有多少种换法?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020327 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved