最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
新竹市| 民丰县| 若羌县| 朝阳县| 长阳| 龙州县| 建水县| 正安县| 信阳市| 沭阳县| 福海县| 昌图县| 斗六市| 永顺县| 启东市| 长乐市| 洛川县| 永泰县| 孟津县| 河北区| 嘉鱼县| 彩票| 通城县| 财经| 科尔| 沛县| 治县。| 尉氏县| 新余市| 梅州市| 静海县| 东乡县| 临高县| 卓尼县| 灵石县| 濮阳市| 拉孜县| 博湖县| 长宁县| 乃东县| 工布江达县|