第六届蓝桥杯试题c/c++B组7
牌型种数
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
#include<iostream> using namespace std; int main() { int s=0, arr[13]; for ( arr[0]=0; arr[0]<=4; arr[0]++) for ( arr[1]=0; arr[1]<=4; arr[1]++) for ( arr[2]=0; arr[2]<=4; arr[2]++) for ( arr[3]=0; arr[3]<=4; arr[3]++) for ( arr[4]=0; arr[4]<=4; arr[4]++) for ( arr[5]=0; arr[5]<=4; arr[5]++) for ( arr[6]=0; arr[6]<=4; arr[6]++) for ( arr[7]=0; arr[7]<=4; arr[7]++) for ( arr[8]=0; arr[8]<=4; arr[8]++) for ( arr[9]=0; arr[9]<=4; arr[9]++) for ( arr[10]=0; arr[10]<=4; arr[10]++) for ( arr[11]=0; arr[11]<=4; arr[11]++) for ( arr[12]=0; arr[12]<=4; arr[12]++){ if (arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6]+arr[7]+arr[8]+arr[9]+arr[10]+arr[11]+arr[12]==13){ s++; } } cout<<s<<endl; }
#include<iostream> using namespace std; int s=0, sum=0; void DFS(int i){ if (sum>13) return ; if (i==14){ if (sum==13){ s++; return ; } } else{ for (int j=0; j<=4; j++){ sum+=j;//记录有几张牌 DFS(i+1); sum-=j; } } } int main() { DFS(1); cout<<s; }