//循环数组,奇数的相对位置不会变,如 1 3 5 7 ,偶数的相对位置不会变,如2 4 6 8 int main() { int n, m; cin >> n >> m; int odd = 1;//记录第一个奇数位置的数 int even = 2;//记录第二个偶数位置的数 bool flag = false;//记录第一个位置是奇数还是偶数,奇数为false,偶数为true for (int i = 0; i < m; i++) { int tmp; cin >> tmp; if (tmp == 1)//1则更新第一个位置的值 { if (flag == false) odd = (odd + 2) % n; else even = (even + 2) % n; } flag = !flag; } if (even == 0) even = n; for (int i = 0; i < n; i=i+2) { if (!flag) cout << odd << " " << even << " "; else cout << even << " " << odd << " "; odd = (odd + 2) % n; even = (even + 2) % n==0?n: (even + 2) % n; } return 0; } 时间复杂度O(N)