输入n和n个数字,输出1~n个数字的所有排列。
【样例输入】
3
1 2 3
【样例输出】
1
2
3
1 2
1 3
2 3
(空白行)
1 2 3
【注意】
输出任意一种顺序均可。
#include <iostream>
using namespace std;
#define endl "\n"
int arr[101];
int n;
void showRst(int k){
for(int i=0;i<n;i++){
//判断第i位是否为1,比如
/*
1011
&0010
------
0010
*/
if(k&(1<<i)){
//注意数组下标从1开始
cout<<arr[i+1]<<" ";
}
}
cout<<endl;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
int end=1<<n;
//[000,111]也就是0~7
for(int k=0;k<end;k++){
showRst(k);
}
return 0;
}