日期游戏解题报告(对抗搜索的典型运用)

这篇博客介绍了如何使用对抗搜索解决一个特定的日期游戏问题。通过递归的dfs函数,判断在不同年份、月份和日期的状态下,操作者是否有必胜策略。程序包含了判断平年和闰年的功能,并在搜索过程中避免重复计算。
摘要由CSDN通过智能技术生成

题目链接:http://acm.qust.edu.cn/problem.php?id=1005

典型的对抗搜索(对抗搜索是一种记忆化搜索,属于博弈论的范畴,若要了解更多关于对抗搜索的知识,请阅读刘汝佳的《算法竞赛入门经典训练指南》P400)。用f[y][m][d]表示在y 年 m 月d 日状态下,该操作者是否有必胜策略,g[y][m][d] 表示这一状态是否已经计算过。对于当前状态,搜索其下一状态是否有必胜策略:若有,则该状态没有必胜策略;反之则有必胜策略。

#include<stdio.h>
#include<cstring>
using namespace std;


bool f[2010][13][35],g[2010][13][35];
int a[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31},   //a[0][i] 表示平年i 月的天数,a[1][i] 表示闰年i月的天数
                      {0,31,29,31,30,31,30,31,31,30,31,30,31}};


bool ping(int y)    //判断是否为平年
{
    if (y%100==0) return false;
    else
        if (y%4==0) return false;
    return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值