Nguồn đề bài http://www.spoj.com/PTIT/problems/BCSINH/
1. Đề bài BCSINH PTIT spoj
Sinh các dãy nhị phân có độ dài n.
Input
Số nguyên duy nhất n (1<=n<=9)
Output
Mỗi dòng một dãy nhị phân. Các dãy nhị phân phải được liệt kê theo thứ tự từ điển.
Example
Input:
 2
Output:
 00
 01
 10
 11
###############
 Đây là 1 bài đệ quy quay lui cơ bản, mình sẽ không giải thích nhiều 😀
2. code tham khảo BCSINH PTIT spoj pascal và c++
a. Code sinh nhị phân Pascal
const
        nmax=9;
type
        data = byte;
var
        n:data;
        res:array[1..nmax]of data;
procedure xuat;
var     i:data;
begin
        for i:=1 to n do
                write(res[i]);
        writeln;
end;
procedure try(i:data);
var     j:data;
begin
        if i>n then
                xuat
        else
                for j:=0 to 1 do
                                begin
                                        res[i]:=j;
                                        try(i+1);
                                end;
end;
begin
        readln(n);
        try(1);
end.b. Code sinh nhị phân c++
//liệt kê dãy nhị phân
#include <iostream>
using namespace std;
int a[10],n;
void init ()
{
    cin >> n; //nhap n;
}
void output()
{
    for(int i=0;i<n;i++)
        cout << a[i];
    cout << endl;
}
void tim(int i)
{
    for(int j=0;j<=1;j++)
    {
        a[i]=j;
        if(i==n-1)   //nếu tìm đến x i cuối cùng thì xuất ra ket quả
            output();
        else
            tim(i+1); // chưa tìm đến i cuối thì tăng i lên
    }
}
int main()
{
    init();  //khởi tạo
    tim(0);
}