这一题放在杂题里,是因为我没有用DP,而是使用的枚举,当然是受到了discuss里面的启发。
因为我们只能有三次机会,每一次只可以是固定的63个数,所以枚举感觉更加直观,但是不知道是不是没有DP快。
#include<stdio.h> #include<string.h> int n; int Darts[63]; int main(){ int t,c=1,i,j,k,res; scanf("%d",&t); for(i = 0 ;i<=20;i++){ Darts[i]=i; Darts[i+20]=2*i; Darts[i+40]=3*i; } Darts[61]=25;Darts[62]=50; while(c<=t){ res=0; scanf("%d",&n); printf("Scenario #%d:\n",c++); for(i=0;i<=62;i++){ for(j=i;j<=62;j++){ for(k=j;k<=62;k++){ if(Darts[i]+Darts[j]+Darts[k]==n) res++; } } } printf("%d\n",res); printf("\n"); } }
原文地址:http://blog.csdn.net/u010006643/article/details/45484345