求帮忙看看ACM笔试题,高血压了
单调栈做的,用例都过了,提交0%,不知道哪错了
题意:输入一个n位正整数,输入删除的位数m,输入正整数;输出删掉m位后最大的数(相对位置不变);
测试用例: 输入: 5 2 19352 输出: 952;解释: 删掉1和3后最大的数是952
```cpp
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int num;
cin >> num;
vector<int> nums(n);
for (int i = n - 1; i >= 0; i--) {
nums[i] = num % 10;
num = num / 10;
}
stack<int> st;
st.push(nums[0]);
int flag = 0;
for (int i = 1; i < n; i++) {
if (flag < m) {
while (!st.empty() && st.top() < nums[i]) {
st.pop();
flag++;
if (flag == m) break;
}
}
st.push(nums[i]);
}
int ans = 0, cnt = 1;
while(!st.empty()) {
ans = ans + st.top() * cnt;
cnt = cnt * 10;
st.pop();
}
cout << ans << endl;
}
```
题意:输入一个n位正整数,输入删除的位数m,输入正整数;输出删掉m位后最大的数(相对位置不变);
测试用例: 输入: 5 2 19352 输出: 952;解释: 删掉1和3后最大的数是952
```cpp
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int num;
cin >> num;
vector<int> nums(n);
for (int i = n - 1; i >= 0; i--) {
nums[i] = num % 10;
num = num / 10;
}
stack<int> st;
st.push(nums[0]);
int flag = 0;
for (int i = 1; i < n; i++) {
if (flag < m) {
while (!st.empty() && st.top() < nums[i]) {
st.pop();
flag++;
if (flag == m) break;
}
}
st.push(nums[i]);
}
int ans = 0, cnt = 1;
while(!st.empty()) {
ans = ans + st.top() * cnt;
cnt = cnt * 10;
st.pop();
}
cout << ans << endl;
}
```
全部评论
从高到低位,只要这一位比下一位低,就优先删这位,如果没删够,在从低位开始删
这是贪心 不是单调栈吧
相关推荐
查看12道真题和解析 点赞 评论 收藏
分享
点赞 评论 收藏
分享
01-14 22:59
西安科技大学 Java
行云流水1971:这份实习简历的优化建议:
结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。
经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。
岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。
信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。
技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。
优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。
若需要进一步优化服务,私信 点赞 评论 收藏
分享