编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
using namespace std;
int A1,A2,A3;
int min(int a,int b,int c)
{
	if((a>=b&&b>=c)||(b>=a&&a>=c)) return c;
	if((a>=c&&c>=b)||(c>=a&&a>=b)) return b;
	if((b>=c&&c>=a)||(c>=b&&b>=a)) return a;
	
}
 
int func(int n)
{
	if(n==0) return  min(A1,A2,A3);
	if (n == 1 || n == 3 || n == 5)
	{
		return 1;
	}
	else if(n>5)
	{
		int n1 = func(n - 1) + 1;
		int n2 = func(n - 3) + 1;
		int n3 = func(n - 5) + 1;
		A1 = min(n1,n2,n3);
	}
	else if(n>3)
		{
		int n1 = func(n - 1) + 1;
		int n2 = func(n - 3) + 1;
		 A2 = min(n1,n2);
	    }
	else if(n>1)
		{
		int n1 = func(n - 1) + 1;
		 A3 =n1;
	    }
	    
	
		 
}
int main()
{
	int n=37;
	int num = func(n);
	cout <<"总值="<<n<< "  至少需要的硬币数量为 " << num <<endl;
	return 0;
}