伊甸園日曆遊戲

2021-06-22 04:22:53 字數 1758 閱讀 5168

描述 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

3

2001 11 3

2001 11 2

2001 10 3

樣例輸出 sampleoutput

yes

nono

資料範圍和注釋 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日曆控制項,它們實質上是乙個彈出對話方塊,使您可以選擇乙個日期,然後使用該日期填充乙個表...