愛因斯坦謎題 誰養魚 C 版 續

2021-09-03 06:53:59 字數 3586 閱讀 8330

+ expand sourceview plaincopy to clipboardprint?  

//[葉帆工作室] 

#define fastcompute        

using system;     

using system.collections.generic;     

using system.componentmodel;     

using system.data;     

using system.drawing;     

using system.text;     

using system.windows.forms;     

using system.diagnostics;         

namespace einstein     

private

void btnrun_click(object sender, eventargs e)     

}     

public

class arithmetic     

;     

string house = new

string ;     

string drink = new

string ;     

string smoke = new

string ;     

string pet = new

string ;     

list lstcombination = new list();   //存放全部結果(預刪減後的結果)   

list lstcombination0 = new list();     

list lstcombination1 = new list();     

list lstcombination2 = new list();     

list lstcombination3 = new list();     

list lstcombination4 = new list();     

public

string doresult()     

}     

//判斷組合是否成立   

if (flag && judge(result))     

strinfo += "\r\n";     

}    

#if fastcompute   

strinfo += "------------------------------------\r\n";     

return strinfo;    

#endif   

}     

}     

}     

}     

}     

}     

strinfo += "------------------------------------\r\n";     

return strinfo;                

}     

private

void tocombination(string[,] result,int index, list  lst,int num)     

}     

//生成全部的組合   

private

void makecombination()     

}     

}     

}     

}     

}     

//剔除組合的判斷條件   

private

bool judgecombination(string combination)     

//預剔除不符合條件的組合   

private

void eliminatecombination()     

else

}     

}     

//建立組合0   

private

void eliminatecombination0()     

}         

}     

//建立組合1   

private

void eliminatecombination1()     

}     

}     

//建立組合2   

private

void eliminatecombination2()     

}     

}     

//建立組合3   

private

void eliminatecombination3()     

}     

}     

//建立組合4   

private

void eliminatecombination4()     

}     

}     

//判斷   

private

static

bool judge(string[,] combination)     

}    

#endif           

//8、住在中間的喝牛奶   

if (combination[2, 2] != "牛奶") return

false;     

//9、挪威住第一間房   

if (combination[0, 0] != "挪威") return

false;     

//10、抽blends香菸的住在養貓的隔壁   

if (combination[index, 3] == "blends")     

}     

//11、養馬住在抽dunhill香菸的隔壁   

if (combination[index, 4] == "馬")     

}     

//14、挪威住藍房子隔壁   

if (combination[index, 0] == "挪威")     

}     

//15、抽blends香菸的人有乙個喝水的鄰居   

if (combination[index, 3] == "blends")     

}     

}              

return

true;     

}     

}     

}    

最終的計算結果如下(7組結果由於不合理,故省略,有興趣的朋友可以自己把上面的**執行一下):

挪威 黃 水 dunhill 貓  

丹麥 藍 茶 blends 馬      

英國 紅 牛奶 pall mall 鳥

德國 綠 咖啡 prince 魚    

瑞典 白 啤酒 blue master 狗  

耗時:115.15625秒

此外大家如果有更好的演算法,不妨拿出來秀一秀!

愛因斯坦謎題 誰養魚 C 版 續

expand sourceview plaincopy to clipboardprint?葉帆工作室 define fastcompute using system using system.collections.generic using system.componentmodel using...

愛因斯坦謎題 誰養魚 C 版 續二

define fastcompute using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text ...

愛因斯坦台階問題演算法C 實現

愛因斯坦台階問題 有人走一台階,若以每步走2級則最後剩1級 x 2 1 若每步走3級則最後剩2級 x 3 2 若以每步走4級則最後剩3級 x 4 3 若以每步走5級則最後剩4級 x 5 4 x 119 0 解同餘方程組 若以每步走6級則最後剩5級 x 6 5 若以每步走7級則最後剛好不剩。問台階共有...