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

2021-09-22 04:56:33 字數 4522 閱讀 6414

+ 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 = 

newstring

;     

string

drink = 

newstring

;     

string

smoke = 

newstring

;     

string

pet = 

newstring

;     

list<

string

> lstcombination = 

newlist<

string

>();   

//存放全部結果(預刪減後的結果)   

list<

string

> lstcombination0 = 

newlist<

string

>();     

list<

string

> lstcombination1 = 

newlist<

string

>();     

list<

string

> lstcombination2 = 

newlist<

string

>();     

list<

string

> lstcombination3 = 

newlist<

string

>();     

list<

string

> lstcombination4 = 

newlist<

string

>();     

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,

intindex, list<

string

>  lst,

intnum)     

}     

//生成全部的組合   

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級則最後剛好不剩。問台階共有...