zoukankan      html  css  js  c++  java
  • zju1024Calendar Game

    #include<iostream>
    #include<cstring>
    using namespace std;
    int maxd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//每个月最多天数
    int iswin[102][13][32];//以该天起始,亚当是否会赢 1会赢 0 会输 -1还没计算过
    int judge(int y,int m,int d)
    {
    	int win=0;
    	if(y==101&&m==11&&d==4)return 0;//若Eve成功
    	if(y>101||(y==101&&(m==12||m==11&&d>4)))return 1;//若Eve失败
        //若还没计算该天
    	if(iswin[y][m][d]==-1)
    	{
    		//先改变月份
    		if(m!=12)
    		{
    			if(d<=maxd[m+1])win=1-judge(y,m+1,d);//与夏娃的胜负相反
    			else if(m==1&&d==29&&(y%4==0&&y!=0))win=1-judge(y,m+1,d);
    		}
    		else win=1-judge(y+1,1,d);
    		//若改变月份失败,再改变日期
    		if(win==0)
    		{
                 if(d<maxd[m])win=1-judge(y,m,d+1);//第二天
    			 else if(d==28&&m==2&&y%4==0&&y!=0)win=1-judge(y,m,d+1);//第二天
    			 else if(m!=12)win=1-judge(y,m+1,1);//下个月首
    			 else if(m==12)win=1-judge(y+1,1,1);//元旦
    			
    		} 
    		iswin[y][m][d]=win;
    	}
        //若已经计算直接返回
    	return (iswin[y][m][d]);
    	
    	
    }
    int main()
    {
    	memset(iswin,-1,sizeof(iswin));
        int cas,y,m,d;
    	cin>>cas;
    	while(cas--)
    	{
    		
            cin>>y>>m>>d;
    		if(judge(y-1900,m,d))cout<<"YES"<<endl;
    		else cout<<"NO"<<endl;
    	}
    }
    
  • 相关阅读:
    Django REST framework
    容器平台自动化CI/CD流水线实操
    VUE--webpack
    vue动态路由匹配
    VUE学习---vue基础与vue-router
    MYSQL-创建测试数据
    MYSQL-主键、外键
    MYSQL-数据库、表、数据操作
    MySQL-添加环境变量 及MySQL服务启停
    MYSQL-命令行
  • 原文地址:https://www.cnblogs.com/sook/p/2046190.html
Copyright © 2011-2022 走看看