问题描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请输出该整数,不要输出任何多余的内容或说明文字。
输入
没有输入。
输出
输出一个整数。
分析:看到这个题我竟然第一选择是想全排列出来...想了一阵子突然发现为什么不用暴力循环呢?然后直接暴力循环出来了...后来网上搜了答案,看到了一个比较简洁的版本http://blog.csdn.net/w_t_y_y/article/details/61917177,附在后面。
public class CardCategory {
//暴力搜索
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 5; l++) {
for (int q = 0; q < 5; q++) {
for (int w = 0; w < 5; w++) {
for (int e = 0; e < 5; e++) {
for (int r = 0; r < 5; r++) {
for (int t = 0; t < 5; t++) {
for (int y = 0; y < 5; y++) {
for (int u = 0; u < 5; u++) {
for (int o = 0; o < 5; o++) {
for (int p = 0; p < 5; p++) {
if (i + j + k + l + q + w + e + r + t + y + u + o + p == 13) {
count ++;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
System.out.println(count);
}
}
public class Main {
2
3 public static void main(String[] args) {
4 Solution s = new Solution();
5 s.getResult(0, 0);
6 System.out.println(s.num);
7 }
8 }
9
10 class Solution {
11 public int num = 0;
12 public void getResult(int curSum, int curStep) {
13 if(curStep == 13 || curSum > 13) {
14 if(curSum == 13)
15 num++;
16 }
17 else {
18 for(int i = 0; i <= 4; i++) {
19 getResult(curSum + i, curStep + 1);
20 }
21 }
22 }
23 }
ps:啥时候我才能写出这样的代码...