新手光能
先判断数位有没有超过n
if(x>n)
超过则输出数后输出换行并
回溯
接下来每个数从1到n for循环判断
for(int i=1;i<=n;i++)
然后判断之前用过没有
if(visited[i]==false)
之后记录到数组以后开始seach(x+1)继续往后搜
高级光能
void search(int x)
{
if (x>n)
{
for (int i=1;i<=n;i++)
cout<<a[i]<<' ';
cout<<endl;
return;
}
for (int i=1;i<=n;i++)
{
if (visited[i]==false)
{
a[x]=i;//把i放到x的位置
visited[i]=true;//把i标记为已经使用过
search(x+1);
visited[i]=false;
}
}
}
新手光能
void search(int x) { if(x>n) { for(int i=1;i<=n;i++) { cout<<a[i]<<' '; } cout<<endl; return ; } for(int i=1;i<=n;i++) { if(visited[i]==false) { a[x]=i; visited[i]=true; search(x+1); visited[i]=false; } } }
高级光能
void search(int x)
{
if(x>n)//元素数量不能大于规定的指定目标。
{
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;//输出这些数列。
}
for(int i=1;i<=n;i++)
{
if(visited[i]==false)//如果数没有使用
{
a[x]=i;//这个数列的第x个变量是i;
visited[i]=true;//这个数量不能使用;
search(x+1);//继续查找下一个变量是谁;
visited[i]=false;//为了能够回溯。
}
}
}//这是全排列函数
最后加search(1)
新手光能
int n; int a[101]; bool vr[101]; void hs(int x) { if(x>n) { for(int i=1;i<=n;i++) { cout<<a[i]<<' '; } cout<<endl; return ; } for(int i=1;i<=n;i++) { if(vr[i]==0) { a[x]=i; vr[i]=1; hs(x+1); vr[i]=0; } } }
高级光能
void search(int x)
{
if(x>n)//元素数量不能大于规定的指定目标。
{
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;//输出这些数列。
}
for(int i=1;i<=n;i++)
{
if(visited[i]==false)//如果数没有使用
{
a[x]=i;//这个数列的第x个变量是i;
visited[i]=true;//这个数量不能使用;
search(x+1);//继续查找下一个变量是谁;
visited[i]=false;//为了能够回溯。
}
}
}//这是全排列函数
最后加search(1)
资深守护
void search(int x) { if(x>n) { for(int i=1;i<=n;i++) { cout<<a[i]<<' '; } cout<<endl; return ; } for(int i=1;i<=n;i++) { if(visited[i]==false) { a[x]=i; visited[i]=true; search(x+1); visited[i]=false; } } }
资深守护
void search(int x) { if(x>n) { for(int i=1;i<=n;i++) { cout<<a[i]<<' '; } cout<<endl; return ; } for(int i=1;i<=n;i++) { if(visited[i]==false) { a[x]=i; visited[i]=true; search(x+1); visited[i]=false; } } }
资深天翼
深度优先搜索dfs
void print(){ total++; for(int i=1; i<=r; i++) cout<<a[i]<<' '; cout<<endl; } void search(int t) { int i; if(t>r) { print(); return; } for(int i=1; i<=n; i++){ if(!b[i]){ a[t]=i; b[i]=true; search(t+1); a[t]=0; b[i]=false; } } }