AC代码:
#include<stdio.h> #include<math.h> #include<map> using namespace std; map<int,int> m; int a[53]; int sum=0; void dfs(int s,int x){ if(s==24){ sum++; return ; } else if(s>24) return; for(int i=x;i<=52;i++){ dfs(s+a[i],i+1); } } int main(){ int count=1; for(int i=1;i<=52;i++){ if(count>13){ count=1; } a[i]=count++; } dfs(0,1); printf("%d",sum); return 0; } /*#include<stdio.h> #define N 52 int dig[52]; int count = 0; void dfs(int sum,int pos){ if(sum==24){ count++; return; }else if(sum>24)return; for(int i = pos;i<N;i++){ dfs(sum+dig[i],i+1); } } int main(){ for(int i = 1;i<=N;i++) dig[i-1] = (i-1)%13+1; //dfs(0,0); // printf("%d",count); return 0; } */