時限: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位二進位制數,每個數占...