#include <iostream>
#include <iomanip>
using namespace std;
int a[10][10];
int n,k;
int cnt = 0;
void aaa(int);
bool bbb(int,int);
int main()
{
for(int i = 1;i<=8;i++)
{
for(int j = 1;j<=8;j++)
{
a[i][j] = 0;
}
}
aaa(1);
return 0;
}
void aaa(int k)
{
if(k>8)
{
cnt++;
cout<<"No."<<cnt<<endl;
for(int i = 1;i<=8;i++)
{
for(int j = 1;j<=8;j++)
{
cout<<setw(2)<<a[i][j];
}
cout<<endl;
}
return;
}
for(int i = 1;i<=8;i++)
{
if(bbb(k,i)==true)
{
a[k][i] = 1;
aaa(k+1);
a[k][i] = 0;
}
}
return;
}
bool bbb(int x,int y)
{
for(int i = 1;i<=8;i++)
{
for(int j = 1;j<=8;j++)
{
if(i+j==x+y||i-j==x-y||x==i||y==j)
{
if(a[i][j]==1) return false;
}
}
}
return true;
}
n个数的全排列
输入整数n(n<9),在输入n个整数,要求输出这n个数的全排列。
输入
第一行是一个整数n。
第二行是n个数。
输出
这n个数的全排列
样例输入
3
1 2 3
样例输出
123
132
213
231
312
321
#include <iostream>
#include <iomanip>
using namespace std;
int a[10];
int b[10];
int c[10];
int n;
void aaa(int);
int main()
{
cin>>n;
for(int i = 0;i<n;i++)
{
cin>>a[i];
}
aaa(0);
return 0;
}
void aaa(int k)
{
if(k>=n)
{
for(int i = 0;i<k;i++)
{
cout<<setw(2)<<c[i];
}
cout<<endl;
return;
}
for(int i = 0;i<n;i++)
{
if(b[i]==0)
{
b[i] = 1;
c[k] = a[i];
aaa(k+1);
b[i] = 0;
}
}
return;
}