关于把100元换成10元5元1元的问题

kyzyyhw001 2010-05-31 07:57:20
#include <iostream>
using namespace std;

void main()
{
int n=0;
int sum=0;
for(int i=1;i<10;i++)
{
for(int j=1;j<20;j++)
{
for(int k=1;k<100;k++)
{
sum=10*i+5*j+k;
if(sum==100)
{
n +=1;
cout<<"第"<<n<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<k<<"张"<<endl;
}
}
}
}
cout<<"按照要求共有:"<<n<<"种兑换方法"<<endl;
cout<<n<<endl;
}
在以上代码中,把100元分成了美种面值至少有一张的情况

现在我希望能够使 有的面值可以为0 那么应该怎么改写以上代码

把k<100改成k<=100行不通
...全文
1360 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
maple_zhj 2010-06-02
  • 打赏
  • 举报
回复
优化一下,如下

#include <iostream>
using namespace std;

void main()
{
int n=0;
int sum=0;

for(int i=0; i<=10; i++)
{
for(int j=0; j<=(100-i*10)/5; j++)
{
int k = 100 - 10*i -5*j;

n +=1;
cout<<"第"<<n<<"种兑换方法是:";
cout<<" 10元"<<i<<"张";
cout<<" 5元"<<j<<"张";
cout<<" 1元"<<k<<"张"<<endl;

}
}
cout<<"按照要求共有:"<<n<<"种兑换方法"<<endl;
cout<<n<<endl;
}
one2zero 2010-06-02
  • 打赏
  • 举报
回复
有的面值可以为0。。。。。

这也可以?

5块钱对成面值为0的 能对多少张啊~~
shenyu1026 2010-06-01
  • 打赏
  • 举报
回复

for(int i=0;i<=10;i++)
{
for(int j=0;j<=20;j++)
{
for(int k=0;k<=100;k++)
{
sum=10*i+5*j+k;
....
Home_rainbow 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 npuhuxl 的回复:]

int id = 0;
for(int i = 0; i <= 10; ++ i)
{
for(int j = 0; j <= 20 - 2 * i; ++ j)
{
cout<<"第"<<id++<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<(100-10*i-5*i)<<"张"<<endl;……
[/Quote]这个答案最好~
Home_rainbow 2010-06-01
  • 打赏
  • 举报
回复
这跟给一定数额的钱,买小鸡,公鸡,母鸡的道理是一样的。。。。。楼上的几个人已经回答很清楚了
lucasma.eth 2010-06-01
  • 打赏
  • 举报
回复
楼主这段代码太需要优化了:
int main(void)
{
int n=0;
int sum=0;
int k = 0;
for(int i=1;i<10;i++)
{
for(int j=1;j<20;j++)
{
k = 100 - j*5 -10*i;
if (k > 0)
{
n +=1;
cout<<"第"<<n<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<k<<"张"<<endl;
}
}
}
cout<<"按照要求共有:"<<n<<"种兑换方法"<<endl;
cout<<n<<endl;
return 0;
}
djjlove_2008 2010-06-01
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
int sum = 0;
for(int i = 0; i <= 10; ++i)
{
for(int j = 0; j <= 20; ++j)
{
for(int k = 0; k <= 100; ++k)
{
if(10 * i + 5 * j + k == 100)
{
++sum;
cout << "第" << sum << "种兑换方法:" << endl;
cout << "10元" << i << "张 ";
cout << "5元" << j << "张 ";
cout << "10元" << k << "张" << endl;
}
}
}
}

cout << endl << "共有" << sum << "种兑换方法" << endl;

system("pause");
return 0;
}

//这样改吧,你的题目还不别的限制条件吗?
cy729314265 2010-05-31
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

void main()
{
int n=0;
int sum=0;
for(int i=0;i<10;i++)
{
for(int j=0;j<20;j++)
{
for(int k=0;k<100;k++)
{
sum=10*i+5*j+k;
if(sum==100)
{
n +=1;
cout<<"第"<<n<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<k<<"张"<<endl;
}
}
}
}
cout<<"按照要求共有:"<<n<<"种兑换方法"<<endl;
cout<<n<<endl;
}
kartik 2010-05-31
  • 打赏
  • 举报
回复
还没有解决吧。顶起
ww884203 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 kyzyyhw001 的回复:]
把k<100改成k<=100行不通
[/Quote]
囧,为什么你只想到改后面的100,没想到改前面的1,这不是非常直接的思路吗?
zyrr159487 2010-05-31
  • 打赏
  • 举报
回复
楼上写的很全了
npuhuxl 2010-05-31
  • 打赏
  • 举报
回复
int id = 0;
for(int i = 0; i <= 10; ++ i)
{
for(int j = 0; j <= 20 - 2 * i; ++ j)
{
cout<<"第"<<id++<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<(100-10*i-5*i)<<"张"<<endl;
}
}
fanster28_ 2010-05-31
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

void main()
{
int n=0;
int sum=0;
for(int i=0;i<10;i++)
{
for(int j=0;j<20;j++)
{
for(int k=0;k<100;k++)
{
sum=10*i+5*j+k;
if(sum==100)
{
n +=1;
cout<<"第"<<n<<"种兑换方法是:";
cout<<"10元"<<i<<"张";
cout<<"5元"<<j<<"张";
cout<<"1元"<<k<<"张"<<endl;
}
}
}
}
cout<<"按照要求共有:"<<n<<"种兑换方法"<<endl;
cout<<n<<endl;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧