题解 | 小红的排列构造①

小红的排列构造①

https://www.nowcoder.com/practice/2b0a9318cc0740d1a78eec06162e7bea

C++

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    // n=1,2 无解
    if (n==1 || n==2) {
        cout << -1;
        return 0;
    }
    vector<int> a;
    // ai+i 不是质数 
    // 令 ai=i 且 n奇 a[1]=n a[n]=1 n偶 a[1]=3 a[3]=1 -- 其实n奇只交换1、3也可
    // n=3 [3,2,1] ok
    // n=4 [3,2,1,4] ok
    // n=5 [5,2,3,4,1] ok
    // n=6 [3,2,1,4,5,6] ok
    if (n%2) {
        cout << n << ' ';
        for (int i=1; i<n-1; i++) {
            cout << i+1 << ' ';
        }
        cout << 1 << ' ';        
    } else {
        cout << 3 << ' ';
        for (int i=1; i<n; i++) {
            if (i==2) cout << 1 << ' ';
            else cout << i+1 << ' ';
        }      
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

牛客37328580...:个人感觉项目只是列出来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务