关注
tql,我当时想着分类讨论,想着想着思路就乱了,还要思路清晰、有条不紊地用代码实现出来,脑子已经一团乱麻了。基于楼主大佬的思路,我改写了个更简洁点的版本。 #include <iostream>
#include <vector>
using namespace std;
int n;
void QuickSort(vector<int>& nums, int left, int right){
if(left >= right) return;
int pivot = nums[left], l = left, r = right;
while(l < r){
while(l < r && nums[r] > pivot) --r;
while(l < r && nums[l] <= pivot) ++l;
swap(nums[l], nums[r]);
}
swap(nums[left], nums[r]);
QuickSort(nums, left, r-1);
QuickSort(nums, r+1, right);
}
int main(){
cin >> n;
vector<int> nums(n, 0);
vector<char> ops(n, '+');
for(int i=0; i<n-1; ++i){
cin >> nums[i];
cin >> ops[i+1];
}
cin >> nums[n-1];
int l = 0, r = 0;
while(r < n){
while(r < n && ops[r] == ops[l]) ++r;
if(ops[l] == '+' || ops[l] == '-'){
if(r < n && (ops[r] == '*' || ops[r] == '/')) QuickSort(nums, l, r-2);
else QuickSort(nums, l, r-1);
}else if(ops[l] == '*'){
if(l > 0 && (ops[l-1] == '+' || ops[l-1] == '-')) QuickSort(nums, l-1, r-1);
else QuickSort(nums, l, r-1);
}else if(ops[l] == '/'){
QuickSort(nums, l, r-1);
}
l = r;
}
cout << nums[0];
for(int i=1; i<n; ++i) cout << ' ' << ops[i] << ' ' << nums[i];
return 0;
}
查看原帖
点赞 1
相关推荐
牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如果秋招能重来,我会____ #
7875次浏览 76人参与
# 苦尽甘来时,再讲来时路 #
7683次浏览 140人参与
# “vivo”个offer #
16557次浏览 136人参与
# 如果上班像打游戏,你最想解锁什么技能 #
1848次浏览 31人参与
# 机械求职避坑tips #
70796次浏览 484人参与
# 为了实习逃课值吗? #
10162次浏览 92人参与
# 快手技术岗信息交流阵地 #
11854次浏览 73人参与
# 校招生月薪1W算什么水平 #
2042次浏览 19人参与
# 一份好的简历长什么样? #
5315次浏览 143人参与
# 选择和努力,哪个更重要? #
133062次浏览 1015人参与
# 秋招许愿,本周能____ #
12318次浏览 86人参与
# 选完offer后,你后悔学机械吗? #
42553次浏览 248人参与
# 班味很重的人是啥样的? #
3230次浏览 29人参与
# 投递无反馈,如何优化求职策略? #
1869次浏览 26人参与
# 应届生第一份工资要多少合适 #
2965次浏览 34人参与
# 材料专业可以靠半导体脱坑吗? #
26452次浏览 138人参与
# 机械制造秋招总结 #
81926次浏览 816人参与
# 大学最后一个寒假,我想…… #
59741次浏览 648人参与
# 职场新人体验 #
117676次浏览 812人参与
# 新凯来求职进展汇总 #
57555次浏览 150人参与
# 华为海思工作体验 #
33474次浏览 139人参与
# 25届非技术实习投递记录 #
134420次浏览 995人参与