//[葉帆工作室]
#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級則最後剛好不剩。問台階共有...