码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-21 14:20:59      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:动态规划   斗地主   种类数   

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

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

第一层枚举牌的种类A?K,第二层倒着枚举当前选了j(1=<j<=17),第三层dp[j]dp[j?k]更新而来(1=<k<=4j?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种

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

标签:动态规划   斗地主   种类数   

原文地址:http://blog.csdn.net/uestc_peterpan/article/details/43898405

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!