题目描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序
自己手里能拿到的初始牌型组合一共有多少种呢?
输出
请输出该整数,不要输出任何多余的内容或说明文字。
方法,dfs深度优先遍历
#include <iostream>
using namespace std;
int cnt, sum;
void dfs(int u){
if (sum > 13 || u > 13) return;//如果当前sum大于13说明手中的牌大于13张,不符合;如果u大于13,说明牌的种类大于13,不符合
if (sum == 13){//如果手里正好有13张排
cnt ++;//满足一种情况,方案数加1
return;//返回
}
for (int i = 0; i <= 4; i ++ ){
sum += i;//加上当前要拿的排数
dfs(u + 1);//进行下一次遍历
sum -=i;//回复现场
}
}
int main(){
dfs(0);
cout << cnt << endl;
return 0;
}
输出结果为
3598180