hdu 4155

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

http://acm.hdu.edu.cn/showproblem.php?pid=4155


搜索博弈


#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
int card[8];
char s[30];
 
int dfs(int sum)  // 用来判断判断当前局面即和为sum是否为胜局
{
    if(sum==31) return 1;  // 剪枝,如果为31 当然为胜局
    for(int i=1;i<=6;i++)
     if(card[i]&&sum+i<=31)   是否为胜局要经的住对手的检验,即对手可能出任何当前可能出的牌,如果其子局面全为败局的话,才为胜局
     {
         card[i]--;
         //cout<<sum+i<<endl;
         int tt=dfs(sum+i);
         //cout<<tt<<endl;
         card[i]++;
         if(tt) return 0;
     }
     return 1; //全为败局
}

int main()
{
    while(scanf("%s",s)==1)
    {
        printf("%s ",s);
        int sum=0;
        for(int i=1;i<7;i++)
         card[i]=4;
        int  n=strlen(s);
        for(int i=0;i<n;i++)
         {
             sum+=s[i]-'0';
             card[s[i]-'0']--;
         }
        if(sum>=31)
        {
            puts(n%2?"A":"B");
        }
        else
        {
            if(dfs(sum))
               puts(n%2?"A":"B");
            else
               puts(n%2?"B":"A");
        }
    }
    return 1;
}


【记忆化搜索】 HDU-4155-The Game of 31 本题是一道博弈题,虽然之前弄过有关博弈方面的算法,但基本都忘了,所以就用记忆搜索水过了…… 思路:开一个八位数组dp[s][a1][a2][a3][a4][a5][a6][d],其中s代表的是31减去之前玩过的卡片加起来的总和的差,a1,a2,a3,a4,a5,a6分别代表1,2,3,4,5,6六个数的张数,d表示当前是谁玩…… #include #include #include usi 阅读详情

相关推荐

ZOJ1827 HDU4155 The Game of 31,博弈论+爆搜

爆搜吧,数据量不大,没必要用记忆化 /******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-06-21 17:50 # Filenam

Neo Fung的专栏 1297

hdu4155 The Game of 31------sg dfs

The Game of 31 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 334    Accepted Submission(s): 168 Problem Description The game of 31 wa

Shirley 2366

HDU 4155 The Game of 31 (博弈)

题意: 1,2,3,4,5,6各有4张一共24张牌,2个人拿牌,要求牌的总和不能超过31,超过了不能拿,谁不能拿谁输1,2,3,4,5,6各有4张一共24张牌, 2个人拿牌, 要求牌的总和不能超过31, 超过了不能拿, 谁不能拿谁输 分析: 博弈基本思想:博弈基本思想: 当前是必胜态,当且仅当有一个后继是必败态当前是必胜态, 当且仅当有一个后继是必败态 当前是必败态,当且仅当所有

TaoSama's Microcosm 449

【dfs博弈】HDU 4155

一开始理解错题意,以为每个人各自有一堆,后来发现是总共才有1堆,问谁会使得堆的和大于31就是输,可以看出31是必胜点,每个人最优的策略是使得自己到达31,因此可以dfs,利用回溯把每个状态输赢求出来,类似于dp,从后往上推。状态的话可以用一个七维数组记录 char str[200]; int dp[33][5][5][5][5][5][5]; int num[10]; int lin(int

leolin_的专栏 731

HDU 4155 The Game of 31

HDU_4155 首先容我吐槽一下:说好的0个数字呢…… 这个题一开始用gets读的,WA得我死去活来的,后来找了个AC的程序发现它不处理空行,于是我改成了scanf试了一下,AC了…… 这个题符合公平组合游戏的特征,所以可以用SG函数理论去解,只不过面临两个问题:第一,如何抽象成有向无环图上的游戏,其实主要也就是说每个节点应该如何描述的问题,第二,终止状态是什么。 ...

weixin_30674525的博客 76

【dfs】HDU 4155

dfs。只标记空格 int g[22][22]; bool vis[22][22]; int d[4][2] = {0,1,0,-1,1,0,-1,0}; int n; int sumb,sumw,sum; int tag; void dfs(int x,int y){ int i,j; for(i=0;i<4;i++){ int xx = x+d[i][0];

leolin_的专栏 778

hdu4155 The Game of 31

The Game of 31 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 480 Accepted Submission(s): 234 Problem Description The game of 31 was a fa

习惯与规则决定命运 1272

HDU 4155 (博弈 记忆化搜索)

题目链接:点击这里题意:有1,2,3,4,5,6各四张牌,AB轮流出牌,谁先使得总和超过31就输.告诉你已经出牌的序列,求最优策略下谁赢.经典的博弈题了.先把游戏结束的状态挖出来,然后记忆化搜索一遍即可.#include <bits/stdc++.h> #define Clear(x,y) memset (x,y,sizeof(x)) #define FOR(a,b,c) for (int a =

morejarphone~ 523

hdu 4155 The Game of 31

题目链接:点这里。Problem DescriptionThe game of 31 was a favourite of con artists who rode the railroads in days of yore. The game is played with a deck of 24 cards: four labelled each of 1, 2, 3, 4, 5, 6. The

温文尔雅 543

Hdu4155The Game of 31(DFS+博弈论)

The Game of 31 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 563    Accepted Submission(s): 268 Problem Description The game of 3

无奈滴微笑 1046

HDU 4155 Eliminate the Conflict(2-SAT)

Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2343    Accepted Submission(s): 1023 Problem Description Con

yasolx的博客 559

poj 4155 The Game of 31

http://acm.hdu.edu.cn/showproblem.php?pid=4155 题目大意: 1,2,3,4,5,6 大小的牌 各有4张 已经选了一些 可能继续选,可能不继续 问谁会赢 思路: 无论该谁选 他的所有可供选择的牌中 只要有一张牌使他胜利(使对方输) 他就会胜利 否则就会输 注意: 输入用scanf(); 代码及其注释: #include<io...

weixin_30326745的博客 129

博弈习题汇总

找规律 or 打表 :HDU 1517 HDU 1525 HDU 1564 HDU 2147 HDU 2897 HDU 1851 HDU 4203 HDU 5794 POJ 1740 ZOJ 2686 51NOD 1534 51NOD 1714 51NOD 1831 UVA 1482 CodeForces 768HYSBZ 3609 HYSBZ 3722 HYSBZ 2463 SG函数:HDU 1...

STOP 3997

数论-hdu3117题解

题目链接 题目大意:输出 Fibonacci 数列的第 n 项 an,如果 an 位数 ≤8 ,否则按格式“高四位…低四位”输出。 分析:注意点:题目给的 n 的范围是 [0, 108] ,直接使用递推的方式求 an 会超时,并且数值超出了表示范围(C++)。 首先Fibonacci 数列的 0~39 项的位数都是在 8 位以内的,如果不知道,可以观察测试用例,a39 对应 63245986 , a40 对应 1023…4155 。所以,对于 0~39 项,可以通过递推公式先打表。 然后,先考虑取出高四位

还没有简介~ 418

HDU 3117 Fibonacci Numbers

Fibonacci Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1290    Accepted Submission(s): 544 Problem Description The Fibonac

Alex 722

hdu 3117

The Fibonacci sequence is the sequence of numbers such that every element is equal to the sum of the two previous elements, except for the first two elements f0 and f1 which are respectively zero and

baidu_30309461的博客 536

hdu 4160 Dolls

Dolls Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 914Accepted Submission(s): 433 Problem Description Do you remember the box of ...

anque1234的博客 176

倍增法和ST算法 个人学习笔记&代码

自用笔记代码 非常潦草

头顶尖尖的博客 294
上一篇: 博弈专题
下一篇: hdu 3980
struggle_mind
博客等级 码龄14年 39粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值