Ví dụ:
n=2 các dãy nhị phân là: 00 01 10 11
n=3 các dãy nhị phân tương ứng là :000 001 010 011 100 101 110 111
Đi từ cuối dãy nếu gặp số 0 thì đổi thành 1 và những số 1 đằng sau biến thanh số 0
#include<iostream>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
vector< vector<int> >PhatSinhdayNhiPhan(int n)
{
vector< vector<int> > tem;
vector<int> bandau(n,0);
vector<int> cuoicung(n,1);
int size=bandau.size();
tem.push_back(bandau);
while(!equal(bandau.begin(),bandau.end(), cuoicung.begin()) )
{
for(int i=size-1;i>=0;i--)
{
if(bandau[i]==0)
{
bandau[i]=1;
for(int j=i+1;j<size;j++)
{
bandau[j]=0;
}
break;
}
}
tem.push_back(bandau);
}
return tem;
}
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
vector< vector<int> >PhatSinhdayNhiPhan(int n)
{
vector< vector<int> > tem;
vector<int> bandau(n,0);
vector<int> cuoicung(n,1);
int size=bandau.size();
tem.push_back(bandau);
while(!equal(bandau.begin(),bandau.end(), cuoicung.begin()) )
{
for(int i=size-1;i>=0;i--)
{
if(bandau[i]==0)
{
bandau[i]=1;
for(int j=i+1;j<size;j++)
{
bandau[j]=0;
}
break;
}
}
tem.push_back(bandau);
}
return tem;
}
Không có nhận xét nào:
Đăng nhận xét