class BackTracking
{
public:
int n;
vector< vector<int> > ketqua;
vector<int>tem;
vector<int>GhiNhanViTri;
void ps()
{
GhiNhanViTri.assign(n,0);
}
void xoa(vector<int> & vd, int vt)
{
vector<int>::iterator it=vd.begin();
it=it+vt;
vd.erase(it,vd.end());
}
void DayNhiPhan(int i)
{
for(int j=0;j<=1;j++)
{
if(GhiNhanViTri[i]==0)
{
xoa(tem,i);
tem.push_back(j);;
}
if(i==n-1)
{
ketqua.push_back(tem);
}
else
{
GhiNhanViTri.push_back(1);
DayNhiPhan(i+1);
GhiNhanViTri.push_back(0);
}
}
}
};
int _tmain(int argc, _TCHAR* argv[])
{
BackTracking ob;
ob.n=10;
ob.ps();
ob.DayNhiPhan(0);
}
Thay vì dùng mảng ta dùng vector để thấy nhiều cái tiện lợi của nó.