列舉與深度優先搜尋

2021-07-23 18:02:03 字數 866 閱讀 3040

()3*6528=3()*8256,在兩個括號裡填入相同的數字,使等式成立。我們可以用下面三行**就可以搞定它

for(i=1;i<=9;i++)

if((i*10+3)*6528==(30+i)*8256)

printf("%d",i);

現在我們想如果是()()()+()()()=()()()(),現在需要我們在括號裡輸入1到9使等式成立。例如173+286=459就是乙個結果。

我們可以用列舉來完成,其實列舉就是把所有的可能性都嘗試一遍的一種方法。

下面我們就來看看我們的列舉是怎麼解決問題的吧

#include

int main() }

printf("total=%d",total/2);//想想除以2的原因

return 0; 

} 我想我們每個人都不願意去寫這樣冗長的**,我們book陣列來解決互不相等的問題,

for(i=1;i<=9;i++)

book[i]=0;

for(i=1;i<=9;i++)//如果某個數出現就標記一下 

book[a[i]]=1;

sum=0;

for(i=1;i<=9;i++)

sum=sum+book[i];//統計出現多少不同的數 

想想用這種方法該如何去寫程式呢?我們想我們還可以把9個空格看成是9個需要我們放9個不同數的盒子,只不過是乙個需要滿足等式的盒子,我們可以試試用深度優先搜尋的方法哦!

#include

int a[10],book[10];

void fun(int step)

return;

}for(i=1;i<=9;i++)

}return;

} int main()

深度優先搜尋與寬度優先搜尋

深度優先搜尋類似於樹的先序遍歷,從每個頂點開始深度優先遍歷,對該分支路徑深入遍歷到不能再深入為止,返回上層,若上一層有新的分支路徑,繼續遍歷該分支,直到所有點都被訪問 1 訪問該頂點,並標記為已訪問 2 if 該頂點的連線點未被訪問過 遞迴呼叫dfs 3 重複 2 直到該頂點的所有連線點都被訪問 t...

深度優先搜尋與廣度優先搜尋

深度優先遍歷的主要思想就是 首先以乙個未被訪問過的頂點作為起始頂點,沿當前頂點的邊走到未訪問過的頂點 當沒有未訪問過的頂點時,則回到上乙個頂點,繼續試探訪問別的頂點,直到所有的頂點都被訪問。沿著某條路徑遍歷直到末端,然後回溯,再沿著另一條進行同樣的遍歷,直到所有的頂點都被訪問過為止。通過上面的圖例可...

廣度優先搜尋與深度優先搜尋

廣度優先搜尋使用的是步步為營的策略,每執行一步迴圈就會把所有可能的情況加入佇列,直到調出迴圈。適用於求最短的問題。深度優先搜尋則是依次遍歷每一種情況,直至找到問題的解。深度優先搜尋和廣度優先搜尋都屬於窮竭法。在執行記憶體空間上面,廣度優先搜尋與情況數成正比,而深度優先搜尋與遞迴深度成正比。inclu...