龍博士魔術金字塔(平面)DFS破解
用DFS直接試出答案,最底下有範例測資。 語言:C++ 如圖(粉紅色積木放在那是要代表左邊已填滿),在參考點的左下方皆已被填滿的前提下,各種拼圖的擺放方式總共只有60種可能性,加上各種條件,預估這個量對程式而言不會太複雜。 計算時從最左下角的點開始排,不斷換拼片或擺法直到成功放入後,將參考點向右移到空白處(若已達最右邊,則移至向上一排的最左邊),開始試下一片;沒有拼片能夠成功拼上,則將上一步改用不同拼片或擺法。重複以上過程,直到試出答案為止。 題外話:做這個的前一天晚上完全睡不著,滿腦子都是這個要怎麼寫,像是「這個寫法會炸,那這樣呢?」。隔天早上一起床(雖然沒睡)就開始動工,結果只花了一個上午就完成了。興頭的力量真可怕。 範例測資: F FF A00 A000 0A000 00A000 all0 AF all0:以下都是0(未填滿空位),因為後面的題目大多都只有上面兩塊,打一堆0很麻煩。 AF:已使用積木代號(注意A跟F之間沒有空格)。 以下是程式碼: #include<set> #include<string> #include<iostream> //global value std::set<char> unused = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'}; char map[10][10] = {{ '0','0','0','0','0','0','0','0','0','0'}, { '0','0','0','0','0','0','0','0','0','1'}, ...