P1106 删数问题——贪心
题目描述
键盘输入一个高精度的正整数
输入格式
输入两行正整数。
第一行输入一个高精度的正整数
第二行输入一个正整数
输出格式
输出一个整数,最后剩下的最小数。
输入输出样例 #1
输入 #1
175438 4
输出 #1
13
说明/提示
用
题解
#include <iostream> #include <string> using namespace std; int main() { string n; int k; // 读取高精度正整数 n cin >> n; // 读取需要删除的数字个数 k cin >> k; while (k > 0) { int i; // 寻找第一个满足前一个数字比后一个数字大的位置 for (i = 0; i < n.length() - 1; i++) { if (n[i] > n[i + 1]) { break; } } // 删除该位置的数字 n.erase(i, 1); k--; } // 去除前导零 while (n.length() > 1 && n[0] == '0') { n.erase(0, 1); } // 输出结果 cout << n << endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了