题目描述
- 牛客小白月赛125F 琪露诺的排列构造
- 题解来自大神Kendieer
- 大神的视频讲解
思路分析
通过打表找规律
ac代码
#include<iostream>usingnamespacestd;constintN=1e5+10;intT;intmain(){cin>>T;while(T--){intn;cin>>n;if(n<=2)cout<<-1<<endl;elseif(n%2==1){for(inti=1;i<=n-1;i++)cout<<i+1<<" ";cout<<1<<endl;}else{for(inti=1;i<=n-3;i++)cout<<i+1<<" ";cout<<n<<" "<<1<<" "<<n-1<<endl;}}return0;}打表
#include<iostream>#include<algorithm>#include<cstring>#include<unordered_map>usingnamespacestd;inta[1000];voidsolve(intn){cout<<"len"<<" "<<n<<endl;for(inti=1;i<=n;i++)a[i]=i;do{boolflag=true;for(inti=1;i<=n;i++){if(a[i]==i){flag=false;break;}}unordered_map<int,bool>mp;for(inti=1;i<=n;i++){if(mp[a[i]+i]){flag=false;break;}mp[a[i]+i]=true;}if(flag){for(inti=1;i<=n;i++)cout<<a[i]<<" ";}cout<<endl;}while(next_permutation(a+1,a+1+n));}intmain(){FILE*fp;freopen_s(&fp,"biao.txt","w",stdout);for(inti=1;i<=10;i++)solve(i);return0;}