C语言程序找零问题怎么运行,C语言,贪心算法,货币找零问题?

贪心算法找零就是现实中从最大面额开始找的思路。不代表是最优解,只是算法之一。

由于面额输入顺序不定,我先对输入的面额进行降序排序。

下面代码:

C语言程序找零问题怎么运行,C语言,贪心算法,货币找零问题?_第1张图片

#include

#include

int main()

{

int i,j,m,n,*ns=NULL,*cn=NULL,sum=0;

printf("请输入总金额m及零钱种类n:"),scanf("%d",&m),scanf("%d",&n);

printf("请分别输入%d种零钱的面额:\n",n);

if(!(ns=(int *)malloc(sizeof(int)*n))) return 1;

if(!(cn=(int *)malloc(sizeof(int)*n))) return 1;

for(i=0;i

//------------考虑输入面额顺序不定,先对面额进行降序排列(如按照降序输入,该段可删除)

for(i=0;i

for(j=i+1;j

if(ns[j]>ns[i]) ns[j]^=ns[i],ns[i]^=ns[j],ns[j]^=ns[i];

//-------------------------------------------------------------------

for(i=0;i

if(m>=ns[i])

cn[i]=m/ns[i],m=m%ns[i],sum+=cn[i],printf("%d元%d张 ",ns[i],cn[i]);

printf("\n最少使用零钱%d张\n",sum);

return 0;

}

你可能感兴趣的:(C语言程序找零问题怎么运行)