(DFS or BFS)Find The Multiple(poj1426)
題目:
給定一個正整數n,請編寫一個程序來尋找n的一個非零的倍數m,這個m應當在十進制表示時每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。
提示:本題采用Special Judge,你無需輸出所有符合條件的m,你只需要輸出任一符合條件的m即可。
Input
輸入包含多組數據,每組數據僅一行,只包含一個正整數n (1 <= n <= 200).
Output
對于輸入的每組n,都輸出任一符合條件的m。即使有多個符合條件的m,你也只需要輸出一個即可。
Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111
分析與解答
*10;*10+1最終都會滿足每位上是零或1
先看dfs,由于是深搜,我們假設用y存那個01的結果,x存位數,那么由于答案輸出任意符合條件的,我們讓他位數超過19就不搜了,如果y%m=0說明y就是答案,我們輸出y然后flag=1,讓其他的都return了
其實這題可以用bfs,因為他也是每個結點分了兩個根結點,那么我們可以逐層查找
先建立一個隊列,存那些1,0組成的數,然后把1放到隊列里
只要隊列不為空,就取隊首元素,然后把隊首pop了
long long y = Q.front();Q.pop();最后發、判斷完再放進去兩個新的子結點
Q.push(y*10);Q.push(y*10+1);代碼參考:
https://blog.csdn.net/super604zong/article/details/60323894
總結
以上是生活随笔為你收集整理的(DFS or BFS)Find The Multiple(poj1426)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: server sql 水平分表_spri
- 下一篇: java 8.0 sinffer_jpc