题意: 给定整数 N,构造排列 a1,a2,…,aN 满足:
在所有满足条件的排列中,选择字典序最小的一个输出。
我的思路:
我尝试举反例没有举出来的一个性质:只要满足 ai 不等于 i 的序列得到的“神祈值”相等,所以只要构造一个满足条件的,字典序最小的序列即可。
然后我就尝试构造,我想了一个简单思路就是说这个:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
for (int i=1;i<=n;++i){
if (i+1<=n)cout<<i+1<<" ";
else cout<<(i+1)%n<<" ";
}
}
还有这个:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
deque<int>dq;
for (int i=1;i<=n;++i){
dq.push_back(i);
}
for (int i=1;i<=n;++i){
if (dq.front()!=i)cout<<dq.front()<<" ";
else {
int x=dq.front();
dq.pop_front();dq.push_back(x);
cout<<dq.front()<<" ";
}
}
}
都全部 WA
了,求大佬指点。