有限制條件的深度優先遍歷生成全排列

2021-07-28 05:23:49 字數 695 閱讀 7880

三羊獻瑞

觀察下面的加法算式: 祥

瑞生輝+   三羊

獻瑞-三

羊生瑞氣

(如果有對齊問題,可以參看【圖

其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。

請你填寫

「三羊獻瑞

」所代表的

4位數字(答案唯一),不要填寫任何多餘內容。

答案:1085

本題的思路是利用深度優先遍歷對這八個不同的字生成0到9的全排列,但是全排列有限制條件,首位數字不為零。

直接在生成全排列的**裡面加上if(限制條件)  continue;

#include#includeusing namespace std;

int visited[10];

int a[10];

void dfs(int index)

{ if(index==8)

{ int sum1=1000*a[0]+100*a[1]+10*a[2]+a[3];

int sum2=1000*a[4]+100*a[5]+10*a[6]+a[1];

int sum3=10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7];

if((sum1+sum2)==sum3)

cout<

深度優先搜尋生成全錯序排列

懷戀啊,記得高中和大一之間的暑假裡剛學c語言時我想寫個24點程式,就搜到了用遞迴實現的這個全錯序程式,當時看了好久才看懂,懷戀懷戀。include include using namespace std define max n 100 bool used max n int perm max n ...

帶有限制條件的Dijkstra演算法

dist maxnum 源節點到節點i的dist intc maxnum maxnum i 到 j 的距離 path 存放每一次的路徑 sp nodes p 必經點 必經線段中的點存放 sp edge maxnum maxnum 必經線段 i j 置位true 對sp nodes p進行全排列,對每...

樹的遍歷 深度優先遍歷和廣度優先遍歷

廣度優先遍歷,類似於樹的按層次遍歷。設圖g是連通的,且圖g的初態是所有頂點均未被訪問過。從圖g的任一頂點vi出發按廣度優先搜尋遍歷圖的步驟是 訪問vi後,依次訪問與vi鄰接的所有頂點w1,w2,w3.wn,再按w1,w2,w3.wn的順序訪問其中每個頂點的所有未被訪問的鄰接點,再按此順序,依次訪問它...