PDA

View Full Version : Liệt kê tập hợp dãy nhị phân có độ dài n. Nhờ mọi người sửa giúp



thanhhiendep20
04-11-2011, 11:04 PM
Em làm xong đoạn code nhưng khi chạy thì nó bị đứng ko hiểu sao luôn , mọi người sửa lại tí giúp em nhé , thanks moi người nhiều .


#include<stdio.h>
#include<conio.h>
void lietke(int n)
{
int a[30] ;
for(int i=0 ;i<n ; i++)
a[i]=0 ;
i=n ;
while(i>=0)
{
for(i=0;i<n ; i++)
printf("%d" ,a[i]) ;
printf("\n") ;
i=n-1 ;
while((i>=0) && (a[i]==1) )
i-- ;
if(i>=0)
{
a[i]=1 ;
for(int j=i+1 ; j<n;j++)
a[j]=0 ;
}
}
}
void main()
{
int i,j,n ;
int a[30] ;
printf("Nhap day nhi phan muon doi : \n") ;
scanf("%d",&n);
nhapmang(a,n);
lietke(n);
xuatmang(a,n);
getch() ;
}

kuhoang0512
05-11-2011, 01:49 AM
Em làm xong đoạn code nhưng khi chạy thì nó bị đứng ko hiểu sao luôn , mọi người sửa lại tí giúp em nhé , thanks moi người nhiều .

Bạn nên đưa đầy đủ code...có chú thích một chút....chứ cứ đưa thiếu thế này thì chịu...hàm nhapmang() và xuatmang() có tác dụng gì và đưa vào đó để làm công việc gì. Nếu chỉ cần liệt kê các chuỗi nhị phân có độ dài n(có phải là về mặt độ dài của chuỗi) thì chỉ cần đưa vào biến n coi như độ dài chuẩn của chuỗi và thực hiện chỉ cần liệt kê ra:
n=2=>11,00,01,10
n=3=>000,001,010,011,100,101,110,111
...

wuanwu
05-11-2011, 08:59 AM
Em làm xong đoạn code nhưng khi chạy thì nó bị đứng ko hiểu sao luôn , mọi người sửa lại tí giúp em nhé , thanks moi người nhiều .




#include<iostream.h>

void _generate(char *bin,int n)
{
cout << bin << endl;
int k = n;
while (k && bin[k-1]=='1')
{
bin[k-1] = '0';
k--;
}
if (k)
{
bin[k-1] = '1';
_generate(bin,n);
}
}

void main()
{
char s[] = "000000";
_generate(s,6);
}

thanhhiendep20
05-11-2011, 09:07 AM
hĩ , mình đang dùng C chứ ko dùng C++ bạn ơi , đúng là hàm bên trên dư hàm nhập xuất mảng thật , mọi người chỉnh lại giúp mình nhé

fbchicken
05-11-2011, 10:12 AM
Mảng mà làm gì. Trong phạm vi mà có thể liệt kê ra được thì n sẽ không quá lớn.
Chỉ việc for 1 số nguyên từ 0->2^n - 1 rồi in ra n bit cuối của nó là xong (chạy được đến n <= 32 với số nguyên 4 byte, n <= 64 với số nguyên 8 byte)