http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1140
我的暴力算法
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
while (cin >> n){
int counter = 0;
int sum = 0;
for (int i = 0;i <= n;i += 50){
for (int j = 0;j+i <= n;j += 25){
for (int k = 0;k+i+j <= n;k += 10){
for (int l = 0;l+i+j+k <= n;l += 5){
for (int m = 0;m+i+j+k+l <= n;m += 1){
if(m + i + j + k + l == n)
counter ++;
if(i/50 + j/25 + k/10 + l/5 + m == 100)
break ;
}
}
}
}
}
cout << counter << endl;
}
return 0;
}
这是利用深搜的
#include <cstdio>
int sum,counter;
const int a[5] = {1,5,10,25,50};
void dfs(int recoder,int sum,int number){
if (number > 100) {
return;
}
if (0 == sum){
counter ++;
return;
}
if (sum < 0) {
return;
}
for (int i = recoder;i < 5;i ++){
dfs(i,sum-a[i],number+1);
}
}
int main()
{
while (scanf("%d",&sum)){
counter = 0;
dfs(0,sum,0);
printf("%d\n",counter);
}
return 0;
}