第六届蓝桥杯试题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;
}

  

原文地址:https://www.cnblogs.com/a863886199/p/6568250.html