NOI1994 删数问题
【问题描述】
键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
输入
两行
第一行:n
第二行:s
输出
最后剩下的最小数。
样例输入
175438 4
样例输出
13
对于一个单调递增的数列如:
1 2 3 4 5
我们就要从尾部开始删除
对于一个单调递减的数列如:
5 4 3 2 1
我们从头部开始删除
那么对于一个无序随机数列如
1 7 5 4 3 8
先删除递减的元素
如果还有要删除的数直接从队尾删除
所得结果就为最小
#include<bits/stdc++.h> using namespace std; char a[250],b[250]; int n,ii,s; int main(){ cin>>a>>n; int l=strlen(a); for(int i=0;i<l-n;i++) { int Min=60; for(int j=s;j<=n+i;j++) { if(a[j]<Min) { Min=a[j]; s=j+1; b[i]=Min; } } } while(b[0]=='0') { for(int i=0;i<l-1;i++) { b[i]=b[i+1]; } l--; } cout<<b<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律