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