问题描述:
手上13张牌,不考虑花色、得牌先后顺序、只考虑点数。自己手里能拿到的初始牌型组合一共多少种。
A,2,3,4,...,10,J,Q,K每个元素有0,1,2,3,4五种情况。这些元素和为13即可。
求解思路:
int sum 记录手上牌的总数
int cur 来遍历依次所有牌型
C++代码:
#include<iostream>
using namespace std;
int sum = 0;
int cnt = 0;
void dfs(int cur) {
if (sum > 13) return;
if (cur == 13) {
if (sum == 13)
cnt++;
return;
}
else {
for (int i = 0; i < 5; i++) {
sum += i;
dfs(cur + 1);
sum -= i;
}
}
}
int main() {
dfs(0);
cout << cnt << endl;
return 0;
}