挺简单的用队列求解的一题,难度不大。
输出格式要注意。
1 #include <iostream> 2 #include <string> 3 #include <cstring> 4 using namespace std; 5 6 class queue_ 7 { 8 public: 9 queue_() :f(-1), r(-1) 10 { 11 memset(s, 0, 10000 * sizeof(int)); 12 } 13 ~queue_() {} 14 void push(int i) 15 { 16 s[++r] = i; 17 } 18 int pop() 19 { 20 return s[++f]; 21 } 22 public: 23 int f; 24 int r; 25 int s[10000]; 26 }; 27 28 void print_(queue_ a, queue_ b) 29 { 30 while (a.r != a.f && b.r != b.f) 31 { 32 if (a.f < a.r) 33 { 34 if(a.f + 1==a.r && b.f==b.r) 35 cout << a.pop(); 36 else 37 cout << a.pop() << " "; 38 } 39 else 40 { 41 break; 42 } 43 if (a.f < a.r ) 44 { 45 if(a.f + 1== a.r && b.f==b.r) 46 cout << a.pop(); 47 else 48 cout << a.pop() << " "; 49 } 50 else 51 { 52 break; 53 } 54 if (b.f < b.r) 55 { 56 if(b.f + 1== b.r && a.f==a.r) 57 cout << b.pop(); 58 else 59 cout << b.pop() << " "; 60 } 61 else 62 { 63 break; 64 } 65 } 66 if (a.f >= a.r) 67 { 68 while (b.f < b.r) 69 { 70 if(b.f + 1== b.r) 71 cout << b.pop(); 72 else 73 cout << b.pop() << " "; 74 } 75 } 76 else 77 { 78 while (a.f < a.r) 79 { 80 if(a.f + 1== a.r) 81 cout << a.pop(); 82 else 83 cout << a.pop() << " "; 84 } 85 } 86 } 87 int main() 88 { 89 int n; 90 queue_ a, b; 91 cin >> n; 92 for (int i = 0; i < n; i++) 93 { 94 int temp; 95 cin >> temp; 96 if (temp % 2 == 0) 97 { 98 b.push(temp); 99 } 100 else 101 { 102 a.push(temp); 103 } 104 105 } 106 print_(a, b); 107 return 0; 108 }
来源:https://www.cnblogs.com/2020R/p/12389765.html