hdu 2069

这题一看,用动态规划、母函数应该都可以,我用深搜水过~

/*
* hdu2069/linux.c
* Created on: 2011-7-28
* Author : ben
*/
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<math.h>

int kind;
int money[5] = {50,25,10,5,1};
int num[5];

void dfs(int step, int remainmoney) {
int i, temp = 0;
if(step == 4) {
for(i = 0; i < step; i++) {
temp
+= num[i];
}
if(temp + remainmoney <= 100) {
kind
++;
}
return ;
}
num[step]
= 0;
do{
dfs(step
+ 1, remainmoney - num[step] * money[step]);
num[step]
++;
}
while(num[step] * money[step] <= remainmoney);
}

void work();
int main() {
#ifndef ONLINE_JUDGE
freopen(
"data.in", "r", stdin);
#endif
work();
return 0;
}

void work() {
int totalmoney;
while(scanf("%d", &totalmoney) != EOF) {
kind
= 0;
dfs(
0, totalmoney);
printf(
"%d\n", kind);
}
}
原文地址:https://www.cnblogs.com/moonbay/p/2119817.html