动态规划不会,穷举法的有一个
#include<stdio.h>
#include<malloc.h>
#include<math.h>
int A[7] = {1, 2, 5, 10, 20, 50, 100};
int count = 0;
void dfs(int n, int top, int s);
int main()
{
int n;
scanf("%d", &n);
while (n != 0)
{
count = 0;
dfs(n, 6, 0);
printf("%d\n", count);
scanf("%d", &n);
}
return 0;
}
void dfs(int n, int top, int s)
{
int i;
if (n == 0)
{
count++;
return ;
}
if (top < 0)
return ;
dfs(n, top-1, s); //先不用A[top]这种货币看看
for (i=A[top]; i<=n; i+=A[top])
{
if (s == 100)//总数不超过100张
return ;
dfs(n-i, top-1, ++s);
}
}
[
本帖最后由 巧若拙 于 2014-12-3 21:02 编辑 ]