zoukankan      html  css  js  c++  java
  • 蓝桥杯省赛 牌型种数java

    小明被劫持到X赌城,被迫与其他3人玩牌。

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

    不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,那么牌的点数在暴力时可以有序。此时,所不确定的便只剩每点牌的张数了。则代码如下

     1 package com.k;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Main
     6 {
     7     public static void main(String args[]) {
     8         long sum = 0;
     9         for(int a=0;a<=4;a++) {
    10             for(int b=0;b<=4;b++) {
    11                 for(int c=0;c<=4;c++) {
    12                     for(int d=0;d<=4;d++) {
    13                         for(int e=0;e<=4;e++) {
    14                             for(int f=0;f<=4;f++) {
    15                                 for(int g=0;g<=4;g++) {
    16                                     for(int h=0;h<=4;h++) {
    17                                         for(int i=0;i<=4;i++) {
    18                                             for(int j=0;j<=4;j++) {
    19                                                 for(int k=0;k<=4;k++) {
    20                                                     for(int l=0;l<=4;l++) {
    21                                                         for(int m=0;m<=4;m++) {
    22                                                             int pre = a+b+c+d+e+f+g+h+i+j+k+l+m;
    23                                                             if(pre==13) {
    24                                                                 sum++;
    25                                                             }
    26                                                         }
    27                                                     }
    28                                                 }
    29                                             }
    30                                         }
    31                                     }
    32                                 }
    33                             }
    34                         }
    35                     }
    36                 }
    37             }
    38         }
    39         System.out.println(sum);
    40     }
    41 }

    答案为 3598180

    再看一下深搜:

    public class Main {
        static int sum = 0;
        static int res = 0;
        public static void main(String[] args) {
            dfs(1);
            System.out.println(res);
        }
        
    //    十三种牌型,循环十三次
        public static void dfs(int num) {
            if(sum>13) {
                return;
            }
            if(num==14) {
                if(sum == 13) {
                    res++;
                }
                return;
            }
    //        选择拿几次
            for(int i = 0;i<5;i++) {
                sum+=i;
                dfs(num+1);
                sum-=i;
            }
        }
    }
  • 相关阅读:
    js 类型检测
    js笔记
    js 笔记 -- 随机生成颜色值
    js笔记 -- toString() 和String()
    jquery 实现的josnp
    json 、jsonp
    关于js 中的 this
    [LeetCode][JavaScript]Symmetric Tree
    [LeetCode][JavaScript]Balanced Binary Tree
    [LeetCode][JavaScript]Wiggle Sort II
  • 原文地址:https://www.cnblogs.com/fightKun/p/9977153.html
Copyright © 2011-2022 走看看