背包算法的问题
今天在论坛上看见有个人在讨论书包算法,于是好奇就也做了个(反正以后也要学的,嘿嘿!)已经知道有面值为: 100,50,30,10的钱,如输入:150,就输出100和50。输入280就输出2个100元,一个50元,3个10元,以此类推。。。可写出来的总是错错错!!代码如下:#include<stdio.h>
void ok(int mianzhi,int f)
{
printf("%d个%d元 ",f,mianzhi);
}
int main(void)
{
int a,b[4]={100,50,30,10},f;
scanf("%d",&a);
for(f=0;f<4;f--)
{
if(a<b[f])
{ if(f==3)
ok(a,1);
else
continue;
}
else if(a>b[f])
{
ok(b[f],a/b[f]);
if(a%b[f]==0)
break;
else
{
a=a%b[f];
continue;
}
}
else if(a==b[f])
{
ok(b[f],1);
break;
}
}
getch();
return 0;
}
逻辑混乱 代码有点乱,可以的话帮忙修改下~~.错误的地方是输入100结果正确,输入120.输出的结果要我喷血!!乱七八糟的!
都帮忙帮忙啦~~~不过我写这个程序也是为了帮别人。。哈哈!!