第三题卡牌,稍微改了一下 #include<iostream> #include<vector> using namespace std; int main() {     int n;     cin >> n;//输入每串的个数     vector<int> a(n);     vector<int> b(n);     for (int i = 0; i < n; i++) {         cin >> a[i];//输入a     }     for (int i = 0; i < n; i++) {         cin >> b[i];//输入b     }     int count = 0;     for (int i = 0; i < n-1; i++) {                  if (a[i] > a[i+1])         {             if (i + 1 <= n && b[i] > b[i + 1] && b[i - 1] > b[i + 1])             {//首先保证数组不能越界i<n,然后看b的后一个数是否小于前一个数              //最后看b的后一个数是否大于a的前一个数,满足条件则交换                 if (b[i - 1] >= b[i]) {                     swap(a[i], b[i + 1]);//交换                     swap(a[i + 1], b[i]);                     // swap(a, b, i + 1);                     count++;                 }             }             else //如果b的值大于其后一个数,则不满***换要求,             {                 cout << -1;//如果不满足,退出                 return 0;             }         }     }     cout << count;        system("pause");     return 0; }