题意:给你3个飞镖盘,你可以镖3次,给你最后的得分,问你可能的情况,记住,飞镖盘没有先后顺序。
DP解法也挺简单的,本人直接暴力了。
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int score[63]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, 18,19,20,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40, 3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,25,50}; int main(void) { int test,v=0; cin>>test; while(test--) { int sum,n = 0; cin>>sum; for(int i=0;i<63;++i) for(int j=i;j<63;++j) for(int k=j;k<63;++k) if(score[i]+score[j]+score[k]==sum) n++; cout<<"Scenario #"<<++v<<":"<<endl; cout<<n<<endl<<endl; } return 0; }