演算法OJ 回溯專題(一) 窮舉n位二進位制數

2021-08-28 11:30:03 字數 845 閱讀 8711

時限:100ms 記憶體限制:10000k  總時限:300ms

描述輸入乙個小於20的正整數n,要求按從小到大的順序輸出所有的n位二進位制數,每個數占一行。

輸入  

輸入乙個小於20的正整數n。

輸出按從小到大的順序輸出所有的n位二進位制數,每個數占一行。

輸入樣例

輸出樣例

000001

010011

100101

110111

從本題開始都是回溯的問題進行的總結,以本題為例:

兩位二進位制數可以通過迴圈表示為:

for(int i = 0; i < 2; i++) cout << i;

for(int j = 0; j < 2; j++) cout << j;

三位二進位制數可以通過迴圈表示為:

for(int i = 0; i < 2; i++) cout << i;

for(int j = 0; j < 2; j++) cout << j;

for(int k = 0; k < 2; k++) cout << k;

顯然是可以通過增加for迴圈的層數來完成不同數字的窮舉,但是這樣的話不能夠輸出任意個數的二進位制數,同樣**也顯得很複雜,通過回溯思想的使用,可以完成生成n位二進位制數的操作

#includeusing namespace std;

int a[20], n;

//a為二進位制數的位數

void search(int m);

int main()

void search(int m)

cout << endl;

}else

窮舉n位二進位制數

本科生大二菜鳥一枚,最近上演算法分析課老師出了道題,要求再輸入乙個小於20的正整數n的條件下窮舉出n位二進位制數。做這道題的時候很容易想到的就是用10進製轉成二進位制數的常用方法,然後迴圈列舉就行了。如下 include includeint main printf n return 0 然後還有一...

演算法練習 NOJ 1323 窮舉n位二進位制數

時限 100ms 記憶體限制 10000k 總時限 300ms 描述輸入乙個小於20的正整數n,要求按從小到大的順序輸出所有的n位二進位制數,每個數占一行。輸入輸入乙個小於20的正整數n。輸出按從小到大的順序輸出所有的n位二進位制數,每個數占一行。輸入樣例 輸出樣例 000 001 010 011 ...

NOJ 1323 窮舉n位二進位制數

2016.10.14 題目描述 窮舉n位二進位制數 時限 100ms 記憶體限制 10000k 總時限 300ms 描述 輸入乙個小於20的正整數n,要求按從小到大的順序輸出所有的n位二進位制數,每個數占一行。輸入 輸入乙個小於20的正整數n。輸出 按從小到大的順序輸出所有的n位二進位制數,每個數占...