杨过能破金刚伏魔圈吗:一个超级简单的编程

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 18:48:03
输入一个货币表示的随机数,然后用现在有的人民币面
值去表示它,怎样才能使输出的人民币数量最少

比如说输入1000块钱 用10张100块钱去表示它
输出的数量就是10 也是人民币数量最少的答案

#include<iostream>
using namespace std;
int main(){
int rmb[6]={100,50,20,10,5,2,1},p;
for(int n; cin>>n&&n; cout<<p<<endl){//输入数据n,n=0时退出
p=0;
for(int i=0; i<6; i++)
if(n>rmb[i]){
p=n/rmb[i];
n%=rmb[i];
}
}
}
顺便说一下,RMB的话贪心没问题,其他的货币的话用这个有BUG的

设定输数为 number (单位全为元)
list()=(100,50,20,10,5,2,1) 为人民币面值
num()=(0,0,0,0,0,0,0) 为相应面值人民币的个数

dim i as integer
for i=0 to 5
if number mod list(i)<>0 then
num(i)=number\list(i)
number=number mod list(i)
end if
next i

#include<iostream.h>
main()
{
int m,n,j,k,q,p,flag=1;
long cash;
cin>>cash;
for (n=0;n<=cash;n++)//1元
for (k=0;k<=cash/2;k++)//2元
for (q=0;q<=cash/3;q++)//5元
for (p=0;p<=cash/10;p++)//10元
for (i=0;i<=cash/20;i++)//20元
for (j=0;j<=cash/50;j++)//50元
for (m=0;m<=100;m++)//100元
{
if((n+k*2+q*5+p*10+i*20+j*50+m*100==cash)&&(flag==1))
{
cout<<n<<k<<q<<p<<i<<j<<m;//最少的组合方式
flag=0;
break;
}
}
}

这个问题用贪婪算法有问题