描述 description adam和eve玩乙個遊戲,他們先從1900.1.1到2001.11.4這個日期之間隨意抽取乙個日期出來。然後他們輪流對這個日期進行操作:
1 : 把日期的天數加1,例如1900.1.1變到1900.1.2
2 : 把月份加1,例如:1900.1.1變到1900.2.1
其中如果天數超過應有天數則日期變更到下個月的第1天。月份超過12則變到下一年的1月。而且進行操作二的時候,如果有這樣的日期:1900.1.31,則變成了1900.2.31,這樣的操作是非法的,我們不允許這樣做。而且所有的操作均要考慮曆法和閏年的規定。
誰先將日期變到2001.11.4誰就贏了。
每次遊戲都是adam先操作,問他有沒有必勝策略?
輸入格式 inputformat 乙個測試點。多組資料。
第一行為資料組數。
接下來一行x y z表示x年y月z日
輸出格式 outputformat 輸出「yes」or「no」表示亞當是否有必勝策略。
樣例輸入 sampleinput
32001 11 3
2001 11 2
2001 10 3
樣例輸出 sampleoutput
yesnono
資料範圍和注釋 hint 建議先把所有情況都算出來^_^
思路:這題那叫乙個坑啊, 思路很簡單, 但實現起來要考慮的
東西太多了, 終於搞出來了。。。
必敗態和勝態有著如下性質:
1、若面臨末狀態者為獲勝則末狀態為勝態否則末狀態為
必敗態。?
2、乙個局面是勝態的充要條件是該局面進行某種決策後
會成為必敗態。?
3、乙個局面是必敗態的充要條件是該局面無論進行何種
決策均會成為勝態?
這三條性質正是博弈樹的原理,但博弈樹是通過計算每
乙個局面是勝態還是
必敗態來解題,這樣在局面數很多
的情況下是很難做到
的,此時,我們可以
利用人腦的推
演歸納能力找到必敗態的共性,就可以比
較好的解決此
類問題了。
#includeint date[110][13][35], run[13] = , ping[13] = ;
int isrun(int year)
if(year % 4 == 0 && year % 100 != 0)
return 0;
}int markmonth(int year, int month, int day)
if(month > 12)
if(isrun(year)) }
else }
return 1;
}int markday(int year, int month, int day)
if(isrun(year))
else
}} else
else
}} return date[year-1900][month][day];
}int getdp()
else
else
}} if(!markmonth(year, month+1, day) || !markday(year, month, day+1))
day--;
} return 0;
}int main()
else
}return 0;
}
伊甸園日曆遊戲
adam和eve玩乙個遊戲,他們先從1900.1.1到2001.11.4這個日期之間隨意抽取乙個日期出來。然後他們輪流對這個日期進行操作 1 把日期的天數加1,例如1900.1.1變到1900.1.2 2 把月份加1,例如 1900.1.1變到1900.2.1 其中如果天數超過應有天數則日期變更到下...
任務日曆,資源日曆以及專案日曆關係
其實日曆本無所謂 資源 任務 專案 的,只是將日曆付給資源後,我們習慣稱之為 資源日曆 只是將日曆付給任務後,我們習慣稱之為 任務日曆 只是將日曆付給專案後,我們習慣稱之為 專案日曆 要用好這些日曆首先就要明白這幾個日曆的關係 list 任務日曆是優先於專案日曆的 資源日曆也是優先於專案日曆的 而資...
access日曆 MS Access日曆 概述
access日曆 ms access日曆 概述 多年來,在bytes上曾多次向我們提出過類似的問題,即 如何在我的access應用程式上下文中將日曆等功能完全納入其中?張貼這些問題的個人並不是指各種activex日曆控制項,它們實質上是乙個彈出對話方塊,使您可以選擇乙個日期,然後使用該日期填充乙個表...