CF-1251C Minimize The Integer 题解

题目大意

给你一串数字序列,如果两个数奇偶性不同,就可以交换位置,问这一串数字序列最小值是多少。

解题思路

属实没想到这个题的正解。。

卡了我好久。

想的时候就没啥好思路。

好久没写题了。。脑子有点僵化了。(其实本来就不是很好用

因为只能交换奇偶性不同的数字的位置。

那么奇数列和偶数列中的每一个元素的相对位置是不变的,

所以只需要判断哪个小,便填入那个小的数即可。

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;

int check(char c) {
if (c == '1' || c == '3' || c == '5' || c == '7' || c == '9') return 1;
return 0;
}

vector<char>q1, q2, q3;

int main() {
int t;
cin >> t;
string s;
while (t--) {
cin >> s;
int l = s.length();
q1.clear();
q2.clear();
for (int i = 0; i < l; i++) {
if (check(s[i])) q1.push_back(s[i]);
else q2.push_back(s[i]);
}
int i, j;
i = j = 0;
while (i < q1.size() && j < q2.size()) {
if (q1[i] < q2[j]) cout << q1[i], i++;
else cout << q2[j], j++;
}
if (i < q1.size()) for (int g = i; g < q1.size(); g++) cout << q1[g];
if (j < q2.size()) for (int g = j; g < q2.size(); g++) cout << q2[g];
cout << endl;
}
}
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • © 2015-2021 sakurakarma
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信