大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn
牌型种数
题目描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
3598180
代码
暴力:
#include <stdio.h>
int main () {
int ans = 0;
for (int a = 0;a < 5;a++)
for (int b = 0;b < 5;b++)
for (int c = 0;c < 5;c++)
for (int d = 0;d < 5;d++)
for (int e = 0;e < 5;e++)
for (int f = 0;f < 5;f++)
for (int g = 0;g < 5;g++)
for (int h = 0;h < 5;h++)
for (int i = 0;i < 5;i++)
for (int j = 0;j < 5;j++)
for (int k = 0;k < 5;k++)
for (int l = 0;l < 5;l++)
for (int m = 0;m < 5;m++)
if ((a+b+c+d+e+f+g+h+i+j+k+l+m) == 13)
ans++;
printf ("%d",ans);
return 0;
}
遍历:
版本一
#include<iostream>
using namespace std;
int sum=0;
void dfs(int n,int cartNum){
if(n>13){
return;
}
if(cartNum>=13) {
if(cartNum==13)
sum++;
//每次取够13,则加1
return;
} else{
dfs(n+1,cartNum);
dfs(n+1,cartNum+1);
dfs(n+1,cartNum+2);
dfs(n+1,cartNum+3);
dfs(n+1,cartNum+4);
//依次往下,每种牌取到0到4
}
}
int main(){
dfs(0,0);
cout<<sum<<endl;
}
版本二
/*
* @Author: motongxue
* @Date: 2020-09-07 19:22:12
* @LastEditors: motongxue
* @LastEditTime: 2020-09-07 19:46:12
* @Blog: https://motongxue.cn
* @Description: file content
*/
public class Main {
static int total = 0;
static void dfs(int dian, int sum) {
if (sum == 13) {
total++;
return;
}
if (dian >= 13) {
return;
}
for (int i = 0; i <= 4; i++) {
dfs(dian + 1, sum + i);
}
}
public static void main(String[] args) {
dfs(0, 0);
System.out.println(total);
}
}
动态规划:
表示取到i
号牌,共取到j
张牌
每种牌能取到的个数都是0到4,按序依次取牌,前一张牌[i-1]取j,j-1,j-2,j-3,j-4,
留给i的种数与其相同。i取到0到4,故相加。
可用到之前子问题的解
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int dp[14][14];
int main()
{
int i,j,k,ans;
memset(dp,0,sizeof(dp));
ans=0;
dp[1][0]=dp[1][1]=dp[1][2]=dp[1][3]=dp[1][4]=1;
//只有1号牌时,最多取4张,忽略牌型,都是1种
for(i=2;i<=13;i++) //牌号,从2,3,4开始取
{
for(j=0;j<=13;j++) //取到牌的张数,逐渐取够13张牌
{
for(k=0;k<=4;k++)
{
if(j-k>=0)
{
dp[i][j]+=dp[i-1][j-k];
}
}
}
}
ans=dp[13][13];
printf("%d\n",ans);
return 0;
}
2020年8月27日更
大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn