#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;
}