P1092 蟲食算 題解 DFS 深度優先搜尋

2021-10-02 05:38:30 字數 897 閱讀 1181

這道題一開始自己寫的時候,只有30分= =

然後參(模)考(仿)了洛谷第乙個題解才寫出來了(不過是在理解了的前提下,自己敲了一遍),下面附上參考的題解部落格位址

參考的題解部落格

我的**:

#include

using

namespace std;

int n, cnt;

char s1[50]

, s2[50]

, s3[50]

;int a[50]

, b[50]

, c[50]

;int next[50]

;//next陣列用來記錄下字母的出現順序

int num[50]

;//num陣列用來記錄每個字母被賦的值, -1表示沒被賦值

int use[50]

;int

cut(

)return0;

}int

check()

return1;

}void

dfs(

int x)

exit(0

);//一定要加這句, 我沒加這句2次都只有80分 }}

for(

int i=n-

1; i>=

0; i--)}

}void

getnext

(int x)

}int

main()

for(

int i=n-

1; i>=

0; i--

)memset

(use,0,

sizeof

(use));

dfs(0)

;return0;

}

P1092 蟲食算 題解(dfs 深度優先搜尋)

所謂蟲食算,就是原先的算式中有一部分被蟲子啃掉了,需要我們根據剩下的數字來判定被啃掉的字母。來看乙個簡單的例子 43 9865 045 8468 6633 44445509678其中 號代表被蟲子啃掉的數字。根據算式,我們很容易判斷 第一行的兩個數字分別是55和33,第二行的數字是55。現在,我們對...

題解 P1092 蟲食算

聽說正解是高斯消元吶,但是我不會 看到大家都寫了搜尋。一種實現很簡單的方法是列舉1 n的排列,判斷是否可行。我算了算時間複雜度 其實我不會算,就大概估計了一下 發現會超時。由於不會算複雜度,我對於這樣的暴搜能過50表示驚訝 o 如果按照豎式從右至左的順序搜,就可以邊搜邊判斷是否可行了。我寫得很麻煩,...

洛谷 P1092 蟲食算(dfs)

題目傳送 這題的官方題解是高斯消元,可是本蒟蒻不會。講一下深搜的方法 1.搜尋從第一位的值開始搜,直到最後一位,判斷是否合法。2.注意剪枝防tle。3.三個數都是n位,最高位不能有進製。include include include using namespace std const int max...