#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 一直以來,狐狸都是狡猾的化身。在兒時,教科書和各色童話書就明白地告訴我們 狡猾的狐狸。它曾經從烏鴉的嘴裡騙過肉,在冬天騙過獵戶,偷吃光了獵戶家的肉。我們也一直這樣...