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;
    	}
    }
    
  • 相关阅读:
    Js Array 删除
    语音播报功能
    js实现HashTable
    Js 克隆
    获取电脑名和IP地址
    获取电脑名和Ip
    IIS 配置问题
    WCF 服务
    【并查集】wikioi1001舒适的路线
    【实用】读取信息
  • 原文地址:https://www.cnblogs.com/sook/p/2046190.html
Copyright © 2011-2022 走看看