十一:贪心算法-寻找硬币
2017-12-28 10:57
281 查看
问题:贪心算法-寻找硬币
题目描述
现有价值分别为:1 3 5 10的硬币若干。请用最少的硬币数量找出n(n<100000000)元钱。
输入
一个数字,表示要找出的钱的数量
输出
一个数字,表示需要多少硬币
样例输入
14
样例输出
3
#include<stdio.h>
#include<stdlib.h>
long k=100000000;
int a[4]={1,3,5,10};
void fun(int n,int m,int sum){
int i;
if(sum==n){
if(m<k) k=m;
printf("%d\n",k);
exit(0);
}
if(sum>n) return;
for(i=3;i>=0;i--){
fun(n,m+1,sum+a[i]);
}
}
int main(){
long n;
int m=0,sum=0;
scanf("%d",&n);
fun(n,m,sum);
return 0;
}
题目描述
现有价值分别为:1 3 5 10的硬币若干。请用最少的硬币数量找出n(n<100000000)元钱。
输入
一个数字,表示要找出的钱的数量
输出
一个数字,表示需要多少硬币
样例输入
14
样例输出
3
#include<stdio.h>
#include<stdlib.h>
long k=100000000;
int a[4]={1,3,5,10};
void fun(int n,int m,int sum){
int i;
if(sum==n){
if(m<k) k=m;
printf("%d\n",k);
exit(0);
}
if(sum>n) return;
for(i=3;i>=0;i--){
fun(n,m+1,sum+a[i]);
}
}
int main(){
long n;
int m=0,sum=0;
scanf("%d",&n);
fun(n,m,sum);
return 0;
}