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);
}