无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

第 74 講:算法源代碼

2021-11-02 01:26 作者:SunnieShine  | 我要投稿

下面列舉在前文提到或使用到的一些算法源代碼。

Part 1?回溯法算法代碼

由于回溯是相對(duì)比較簡(jiǎn)單的算法,所以我們使用C語(yǔ)言進(jìn)行描述。它的代碼如下。

測(cè)試的結(jié)果如下。

可以從思路上發(fā)現(xiàn),回溯法無(wú)法驗(yàn)證題目的唯一性,但它可以驗(yàn)證題目是否有解。如果題目無(wú)解,則沒(méi)有任何的結(jié)論的輸出;但如果有解,它就會(huì)嘗試輸出一個(gè)解,并退出程序(不過(guò)你可以考慮更改“n == 81”條件內(nèi)執(zhí)行的語(yǔ)句來(lái)更改得到解時(shí)候的執(zhí)行邏輯。

不過(guò)由于C語(yǔ)言不支持異常,所以我們無(wú)法控制輸出固定個(gè)數(shù)解的操作。不過(guò)在其它的高級(jí)編程語(yǔ)言里,我們可以采用異常機(jī)制,當(dāng)輸出的解的總數(shù)超出一定限度的時(shí)候,讓該遞歸函數(shù)拋出遞歸跳出的異常(例如Java的InterruptedException)來(lái)跳出執(zhí)行。

Part 2 舞蹈鏈算法代碼

這里列出舞蹈鏈算法的源代碼,為了思路更為清晰,此處將使用C#語(yǔ)言描述。

2-1?數(shù)據(jù)節(jié)點(diǎn)文件(DataNode.cs)

2-2 列節(jié)點(diǎn)文件(ColumnNode.cs)

2-3?舞蹈鏈文件(DancingLink.cs)

2-4?矩陣行節(jié)點(diǎn)文件(DancingLink.MatrixRow.cs)

2-5 解題器對(duì)象(DancingLinksSolver.cs)

2-6?主方法調(diào)用(Program.cs)

Part 3?Linq解法算法代碼

在數(shù)獨(dú)里,我們甚至可以使用Linq輕松完成一個(gè)題目的解題,而且比純回溯要更快一些。我們可以嘗試使用Linq自帶的查詢(xún)和替代功能,為一個(gè)數(shù)獨(dú)盤(pán)面(字符串形式)進(jìn)行解題。代碼如下(使用C# 8提供的語(yǔ)法)。

可以從代碼里看出,實(shí)際上它就是在不斷替換字符為0(0表示空格)的地方,然后得解的操作。

第 74 講:算法源代碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
区。| 乌苏市| 闵行区| 渝北区| 焉耆| 景谷| 武义县| 绿春县| 临桂县| 五指山市| 晋中市| 泰宁县| 尉犁县| 井冈山市| 当雄县| 娄烦县| 余庆县| 定兴县| 义马市| 武山县| 肇源县| 宁陵县| 岑巩县| 江津市| 盖州市| 赤水市| 静安区| 临安市| 大关县| 黔西县| 宁海县| 普兰店市| 凭祥市| 富源县| 太仆寺旗| 上蔡县| 阿合奇县| 汉川市| 桂林市| 柳州市| 灵台县|