斗地主不算花色算大小王,起初发到的17张牌有多少种?

用动态规划算法来求,设dp[j]表示选了j张牌的种类数。

起初dp[j]=0(j>0),dp[0]=1。

第一层枚举牌的种类A?K,第二层倒着枚举当前选了j张(1=<j<=17),第三层dp[j]由dp[j?k]更新而来(1=<k<=4,j?k>=0)。

如果大小王都不在,则有dp[17]种;如果大小王只有一个,则有dp[16]种;如果大小王都在,则有dp[15]种。所以ans=dp[17]+2×dp[16]+dp[15]。

#include<cstdio>
#include<cstring>
int dp[20],ans;//dp[j]表示选j张牌的种类数
int main(){
    memset(dp,0,sizeof(int));
    dp[0]=1;
    for(int i=1;i<=13;i++){//A-K
        for(int j=17;j>=1;j--){
            for(int k=1;k<=4;k++){
                if(j-k>=0) dp[j]=dp[j]+dp[j-k];
            }
        }
    }
    ans=dp[17]+2*dp[16]+dp[15];
    printf("ans=%d\n",ans);
}

最终求得,斗地主不算花色算大小王,起初发到的17张牌有58684015种

时间: 2024-12-30 08:05:19

斗地主不算花色算大小王,起初发到的17张牌有多少种?的相关文章

C++面试题5:建议在函数里面不要用sizeof算数组的大小

C++面试题5:建议在函数里面不要用sizeof算数组的大小 #include <iostream>using namespace::std; void foo(const int[]); int main() { int arr[3] = {1,2,3}; cout<<"in main array size: "<<sizeof(arr)/sizeof(int)<<endl; foo(arr); } void foo(const int

趣味集算:算二十四

算24点,是一种常见的智力游戏.它可以使用抽去大小王的扑克牌来玩,随便抽出4张牌,要求通过加.减.乘.除等四则运算,并使用所有的这4个数,将结果算为24.在玩这个游戏时,扑克牌中的JQK记为11,12和13. 用集算器,可以比较方便地编写程序,根据随便给定的4个数,计算出游戏的解答,如下面的24points.dfx: A B C D 1 =arg1 [+,-,*,/] [] [] 2 =to(0,255).([~\64+1, ~%64\16+1,~%16\4+1,~%4+1]) =A2.sele

从技术经理的角度算一算,如何可以多快好省的做个app

[导读]前端时间,一篇“从产品经理的角度算一算,做个app需要多少钱”的文章在网上疯传,可见大家对互联网创业的热情!这次,从一名技术经理的角度再给大家分析一下,如何使用跨平台开发技术为你节省上百万的开发成本.所谓“跨平台”开发技术,就是使用一种语言和一种开发工具同时支持几种不同的手机/平板设备,这样做不仅仅省钱而且开发效率高,可以让你更快的推出新版本和新功能! 作为一名软件工程顾问,我曾参与过很多的项目,主要为软件团队进行开发工具和方法论方面的咨询/培训/指导,我接触过不下100个各种类型/大小

Html、CSS、JavaScript 实时效果在线编辑器 - 学习的好工具,算不算?!

关于 二维码 与 NFC 之间的出身贫贱说 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. http://jsfiddle.net/vnkuZ/ 总共四个工作区:左上是 Html 界面组件:左下

算不算被虚度的这几年

目前作为一个在体制内科研单位编程的非科班出身的野生码农,这几年的路走的平淡而又焦急不已.至于就朝着自己想做的事情努力的方向上来说,这几年算不算被虚度了也是个让自己心里比较没底的问题. 2007年夏天来到西安上大学,专业是被调剂到的测控技术与仪器,在这所高校,基本算是个玩硬件的专业,那年可能也是因为个人不喜欢系主任宣扬的理念,彻底对硬件无感.喜欢去图书馆借一些心理学和人生道路方面的书,上课的时候窝在能晒到太阳的角落里看的兴致勃勃,倒是也懂得了不少道理,同时也产生了疑问:我的未来到底应该在哪里. 2

Git算不算程序员的必备技能?

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书. --异步小编 Git的背后有着一个非常精彩的成功故事.2005年4月,Linus Torvalds因不满当时任何一个可用的开源版本控制系统,就亲自着手实现了Git. 时至今日,如果我们在Google中搜索"git version control"这几个关键词,都会看到数以百万计的返回结果.Git已经俨然成为了新型开源项目的一个标准.许多大型的开源项目都已经或正在计划迁移到G

这算不算星座预算误差?

前天看星座,看到昨天有人请我吃饭.当时科长还在,高兴地告诉他明天有人请我吃饭哦.结果昨天一天也没人请我吃饭.下午去帮人弄打印机,一下午也没弄好,下班就回来了,准备今天再战.没想到小女孩,就是电脑的主人不甘心,又把科长给叫去了,去弄了半天也没弄好.小女孩还把她的饭赠给了科长.科长回来了,说把饭给你吃吧,昨天不是说今天有人请吃饭吗?就算我请你吃了.NO,又不是本人挣来的,不要,你还是拿回家吧. 今天还是不甘心失败,又查了半天资料,再去弄.又弄了大半天.真是死心了,重装系统!就不相信办不了这点事.可重

54张牌模拟斗地主

54张牌模拟斗地主 package demo; import java.util.Random; /** * 54张牌洗牌和发牌 * */ public class Puker { public static void main(String[] args) { Random random = new Random(); // 初始化数组 String[] puker = { "♠A", "♠2", "♠3", "♠4", &

【猜牌问题】甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A、Q、4 黑桃J、8、4、2、7、3 草色K、Q、5、4、6 方块A、5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙。教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌。 乙:我知道你不知道这张牌。 甲:现在我知道这张牌了。 乙:我也知道了。 请问:这张牌是什么牌?

甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A.Q.4 黑桃J.8.4.2.7.3 草色K.Q.5.4.6 方块A.5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙.教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌.乙:我知道你不知道这张牌.甲:现在我知道这张牌了.乙:我也知道了. 请问:这张牌是什么牌? 解: 教授告知甲点数,告知乙花色 人物 已知 未知 甲 A 红桃.方块 Q 红桃.草色 4 红桃.黑桃.草色 J 黑桃 8 黑桃 2 黑桃 7 黑桃 3 黑