小狗與狐狸題解

2021-10-04 17:31:28 字數 1437 閱讀 9049

#include #include #include #include using namespace std;

//初始化狀態

//當前無法判斷是小狗獲勝還是狐狸獲勝

//則為-1

enum res

;//一維儲存0,1

//二,三,四,...維儲存0-31

res ans[2][32][32][32][32][32];

//在棋盤中黑色方格的下標為[0,31]

//所以不會出現32號黑色方格

//所以當出現32時,為不可到達的方格

//也就是不可到達的路徑

const int noway = 32;

//傳遞進來的引數為整個棋盤中,黑色方格的排序

//也就是小狗在棋盤中黑色方格的位置

int dogmoveleftdown(int pos)

int dogmoverightdown(int pos)

//pos參考小狗移動

//d的取值範圍[1,4]

int foxmove(int pos, int d)

if (d == 2)

if (d == 3)

if (d == 4)

//參照小狗向左下方移動

if (i < 0 || i >= 8 || j < 0 || j >= 4)

return noway;

return i * 4 + j;

}// res r = dfs

(side, x[1], x[2], x[3], x[4], x[0])

;res dfs(int dogturn, int dogpos1, int dogpos2, int dogpos3, int dogpos4, int foxpos)

else

}else

} //返回對應狀態的結果

return ans[dogturn][dogpos1][dogpos2][dogpos3][dogpos4][foxpos];

}int main()

//x[0]為狐狸在棋盤中黑色方格的位置

//所以排序x陣列從下標為1開始

//將錄入的小狗位置按從小到大排序

sort

(x + 1, x + 5)

; //side為1為小狗先走

//side為0為狐狸先走

//將4只小狗和狐狸在棋盤中黑色方格的位置傳入dfs

res r = dfs

(side, x[1], x[2], x[3], x[4], x[0])

; //列印dfs的返回結果

printf

(r == dogwin ? "%d:dog win\n"

:"%d:fox win\n", index++);}

return 0;

}

狐狸與鴨子的問題

話說,乙個圓形池塘,鴨子在池塘裡,狐狸在岸邊,鴨子只有遊到岸邊才能飛走,而狐狸想吃鴨子,但是狐狸又不會游泳,只能在岸上跑。狐狸在岸上奔跑的速度是鴨子在水裡游的速度的4倍,問鴨子怎樣才能飛走而不被狐狸吃掉,假設狐狸足夠聰明。乙個可行的想法是,鴨子在池塘裡面遊小圈,而狐狸在岸上跑大圈,但是被鴨子越落越遠...

狐狸,貝葉斯與大資料的思維方式

ps 大資料使用的思維方式 假設擲出一枚硬幣,正面朝上的概率是50 如果連續99次投擲硬幣都是正面朝上落地,那麼下一次投擲硬幣正面朝上落地的概率是多少?這是taleb在 黑天鵝 一書中給出的乙個假想的問題。在taleb的書中,受過正統教育的約翰博士給出了教科書教給我們的標準回答,下一次投擲硬幣正面朝...

狐狸的狡詐與智慧型 談程式設計中的技巧處理

author jeff2005 11 30 關鍵字 程式設計技巧 環境 window xp professional sp2,vc6.0 一直以來,狐狸都是狡猾的化身。在兒時,教科書和各色童話書就明白地告訴我們 狡猾的狐狸。它曾經從烏鴉的嘴裡騙過肉,在冬天騙過獵戶,偷吃光了獵戶家的肉。我們也一直這樣...