package Newoj;publicclass 牌型种数dfs {publicstaticlong ans =0;publicstaticvoiddfs(int cha,int k){if(cha <0|| k >13)//剪枝return;if(cha ==0){
ans++;return;}else{for(int i =0; i <5; i++){dfs(cha - i, k +1);}}}publicstaticvoidmain(String[] args){dfs(13,0);
System.out.println(ans);}}
暴力for循环
package Newoj;publicclass 牌型种数暴力for循环 {publicstaticvoidmain(String[] args){int ans =0;for(int a =0; a <=4; a++){for(int b =0; b <=4; b++){for(int c =0; c <=4; c++){for(int d =0; d <=4; d++){for(int e =0; d <=4; d++){for(int f =0; f <=4; f++){for(int g =0; g <=4; g++){for(int h =0; h <=4; h++){for(int i =0; i <=4; i++){for(int j =0; j <=4; j++){for(int k =0; k <=4; k++){for(int l =0; l <=4; l++){for(int m =0; m <=4; m++){for(int p =0; p <=4; p++){if((a + b + c + d + e + f + g + h + i + j + k + l + m
+ p)==13){
ans++;}}}}}}}}}}}}}}}
System.out.println(ans);}}
dfs解法package Newoj;public class 牌型种数dfs { public static long ans = 0; public static void dfs(int cha, int k) { if (cha < 0 || k > 13) //剪枝 return; if (cha == 0) { ans++; return; } else { for (int i = 0; i < 5; i+