zoukankan      html  css  js  c++  java
  • 牌型种类 蓝桥杯

    题目:

    小明被劫持到 X 赌城,被迫与其他 3 人玩牌。 
    一副扑克牌(去掉大小王牌,共 52 张),均匀发给 4 个人,每个人 13 张。 
    这时,小明脑子里突然冒出一个问题: 
    如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

    想法:  (也是参考别人的博客之后才...不过这种思想还是要有的,然后就造了一遍轮子)

    题目一共52张牌,不分花色,即每种牌(A,1,2,3...J,Q,K)有四张,最后从中拿取13张的可能组合牌型。这个题要抽象化,就是每种牌有5种方式拿取,

    即一张也没有拿到,拿到1张,拿到2张,拿到3张,拿到4张,五种可能。然后通过DFS来穷举每一种可能(就像搜索迷宫一样),即拿到13张牌就算一种牌型,进行累加便可。

    当然拿牌张数大于等于13就是边界了。

    注意:深搜时要控制好每次都会选择一张也没拿的情况,也就是0

    参考代码:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    long long ans; 
    // cnt 计算已经拿取的张数
    // k就是控制递归时,控制一直取0(也就是不拿)的情况 
    void dfs(int cnt, int k) {
        if (cnt == 13) ans++;
        if (cnt >= 13 || k >= 13) return;
        
        for (int i = 0; i <= 4; i++)
            dfs(cnt+i, k+1);
    }
    
    int main( ) {
        ans = 0;
        // 初始化张数为0,拿的次数初始为0 
        dfs(0, 0);
        cout << ans << endl;
        return 0;
    }

    有不对的请多包涵

     

  • 相关阅读:
    Python冒泡算法和修改配置文件
    第五章:处理数据
    第四章:持久存储
    Python之打印99乘法表
    Python之编写登录接口
    Python之文件操作
    第三章:文件与异常
    FineUI 修改config表属性
    FineUI Grid中WindowField根据列数据决定是否Enalble
    表之间不同字段的数据复制
  • 原文地址:https://www.cnblogs.com/hello-dummy/p/12218900.html
Copyright © 2011-2022 走看看