贪婪算法例题1:
#include<stdio.h>
int main(){
/*有1元 2元 5元 10 元 20元 50元 100元的钞票 使用这些钞票支付?元,最少需要?张*/
/* 贪婪算法,先取面值大的 */
int num[]={1,2,5,10,20,50,100};
int money = 0;
int n = sizeof(num)/sizeof(int);
for(int i = 0; i < n-1; i++)
{
for(int j = 0 ; j< n-1-i; j++ )
{
if(num[j] < num[j+1])
{
//int tmp = num[j];
//num[j] = num[j+1];
//num[j+1] = tmp;
int tmp = num[j]^num[j+1];
num[j+1]=num[j+1]^tmp;
num[j]=num[j]^tmp;
}
}
}
scanf("%d",&money);
int total = 0;
for(int i = 0; i < n; i++ )
{
int use = money/num[i];
total = total + use;
money = money%num[i];
printf("需要%d面值%d张,剩余%d\n",num[i],use,total);
}
printf("总张数%d\n",total);
return 0;
}