本文主要是介绍小明玩牌,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
#include<iostream>
using namespace std;int sum = 0;//手牌数
int count1 = 0;//方案数/*深度优先算法*/
void dfs(int kind)//kind表示当前的点数
{if (sum > 13 || kind > 13)return;//如果总数大于13直接returnif (kind == 13 && sum == 13)//如果满足要求退出循环{count1++;return;}if (kind <= 13){int i;for (i = 0; i < 5; i++)//取0张或者取4张{sum = sum + i;dfs(kind + 1);sum = sum - i;}}
}
int main()
{dfs(0);cout << count1 << endl;return 0;
}
3598180
这篇关于小明玩牌的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!