## Permutations [題目連結](https://cses.fi/problemset/task/1070) 給定一整數 $n$,本題需要你把 $1~n$ 的數字做排序,使其相鄰的元素"絕對差"不為 $1$ 也就是 $3、4$ 或 $7、6$ 這種只差 $1$ 的數字不能放在相鄰位 如果有排序能達到條件就將其輸出(能達到條件皆視為答案),如果沒有就輸出 "NO SOLUTION" --- 題目標籤 : 數學、判斷 本題提示 : 可以去試試看不同的數字,從中找到關聯 解題思路 : 可以先思考哪些數字是不行的,我用一個方法,讓奇數排在一起,讓偶數排在一起 因為兩個奇數或兩個偶數最小絕對差是 $2$ 所以多個相鄰奇數或偶數不會出現問題,但是還有一種情況 比如: 奇奇奇偶偶偶 當中的 "奇偶" 就有可能出現問題,因為奇數、偶數最小絕對差是 $1$ 在 $n = 3$ 的情況下就會遇到問題,$1、3、2$ 的 $3、2$ 出現問題,$n = 2$ 也一樣 那 $n = 4$,乍看之下 $1、3、2、4$ 會遇到問題,但其實 $2、4、1、3$ 就不會 所以最後還需要先輸出偶數再輸出奇數,越往後的數字只會在奇偶交界處相差越大 也就不會遇到任何問題,接下來就是照著上面的邏輯去解 ```cpp= #include<bits/stdc++.h> using namespace std ; int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0) ; int n ; cin >> n ; if (n == 2 || n == 3) // 無解 cout << "NO SOLUTION\n" ; else { for (int i=2;i<=n;i+=2) // 先偶數 cout << i << ' ' ; for (int i=1;i<=n;i+=2) // 再奇數 cout << i << ' ' ; } return 0 ; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up