其他分享
首页 > 其他分享> > 全排列问题

全排列问题

作者:互联网

先定义两个数组,一个是用来存放解的,一个是用来标记该数是否用过。

先判断格子是否填满了,如果填满,则输出。

如果没有填满,则开始循环,在循环中先判断当前填的数是否用过,如果没有,则填入,搜索下一格。

#include<bits/stdc++.h>
using namespace std;
int a[10],b[10],n,ij;
void ss(int sss){
if(sss==n){
for(int i=1;i<=n;i++){
printf("%5d",b[i]);
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(a[i]!=0){
b[sss+1]=i;
a[i]=0;//标记
ss(sss+1);
a[i]=1;//回溯
}
}
}
int main(){
cin>>n;
for(ij=1;ij<=n;ij++){
a[ij]=1;
}
ss(0);
}

标签:10,填满,排列,int,sss,问题,ss,ij
来源: https://www.cnblogs.com/wangjunlong9948/p/16615138.html