牌类种树
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
思路: 首先无论怎么取,手牌为13张的时候结束.也就是递归结束标志.因为只考虑点数的话,有些牌可以不取,也就是说每种牌可取的为0,1,2,3,4.最多可取13次.
#include <iostream> using namespace std; int count,sum; int a[15]; void dfs(int step){ if(step==14){ if(sum==13){ count++; } return; } if(sum>13) return; for(int i=0;i<=4;i++){ a[step]=i; sum+=i; dfs(step+1); sum-=i; } } int main(){ dfs(1); cout<<count; }