0
点赞
收藏
分享

微信扫一扫

牛客寒假算法基础集训营5

朱小落 2022-02-20 阅读 102

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

众所周知,数回惨败于九峰之前,叉同学还有一段黑历史:163点也玩不过九峰

163点的规则如下:从一副去掉大王小王的扑克牌中抽出六张,A,J,Q,K视为1,11,12,13,用这6张牌经过有理数的加减乘除运算(过程中可以出现分数)且每张牌都用到的情况下,如[9,9,9,7,4,7],可以发现(9+9+7)*4+9*7=163或者(9+9+4+9/7)*7=163

在多次163比试惨败于九峰后,叉同学决定写一个打表程序作弊,但是如果按照52张取6张的思维去枚举,方案有20358520种,考虑到花色不同但牌型相同的组合其实是一样的,所以实际上对于算163点来讲,不同性质的牌组会比(526)\tbinom{52}{6}(652​)小很多,但叉哥的数学水平实在垃圾,并不会算去重后的这个数字。

你可以帮他算出来吗?

输入描述:

本题无输入

输出描述:

输出一个数字表示方案数

思路

利用dfs进行遍历

每一张牌只能被选择四次,每当满足要求(即抽取13张)后sum++;

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int sum=0;
void dfs(int i,int ci){
    if(ci>6) return;
    if(i==13){
        if(ci==6){
            sum++;
        }
        return;
    }
    for(int p=0;p<=4;p++){
        dfs(i+1,ci+p);
        }
    }
     
int main(){
    dfs(0,0);
    cout<<sum;
}

举报

相关推荐

0 条评论