贪婪法 换零钱

使用贪婪法换算零钱组成

// 贪婪算法  ;换零钱
 #include<stdio.h>
 
 #define MAXN 9  
 int parvalue[MAXN]= {10000, 5000, 1000, 500, 200, 100, 50, 20, 10};
 
 //查找  
 int num[MAXN] = {0}; // 保存对应面额的钱。 
 int exchange(int n)
 {
 	int i, j;
	for(i = 0; i<MAXN; i++)
	 	if(n > parvalue[i])  break;  // 在parvalue数组中找到第一个比n 小的值 
	while(n> 0 && i< MAXN)
	{
	 		if ( n >= parvalue[i] )
			 {
			 	n -= parvalue[i];
				 num[i]++; 
			  } 
			  else if(n < 10 && n>=5)
			  {
			  		num[MAXN - 1]++;
			  		break;
			  }
			  else
				i++;
	}
	return 0; 
  } 
  int main()
  {
  	int i;
	  float m;
	  printf("请输入找零的金额:");
	  scanf("%f", &m);
	  exchange((int)100 *m);
	  printf("\n%.2f元零钱组成:\n", m);
	  for(i = 0; i< MAXN; i++)
	  {
	  	if(num[i]>0)
	  		printf("%6.2f: %d张\n", (float)parvalue[i]/100.0,num[i]);
	   } 
	   
	   getch();
	   return 0;
	   
  }
发布了24 篇原创文章 · 获赞 5 · 访问量 2770

猜你喜欢

转载自blog.csdn.net/m0_37536859/article/details/104262607
今日推荐