NOI1994 删数问题

【问题描述】

键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。

输入

两行
第一行:n
第二行:s

输出

最后剩下的最小数。

样例输入
175438
4

样例输出

13

分析:高精度输入时用字符串,然后再转入int数组中套两层循环在排序同时也删除较大数字。

最后走一遍排序完的数组,一直找到没有被删除的数字然后输出要求个数

 

#include<bits/stdc++.h>
using namespace std;
string st;
int n,a[251],l,k;
int main()
{
cin>>st;
cin>>n;
l=st.size();//输入字符串和要删除的数字个数,并获得字符串的位数
for(int i=0;i<l;i++) a[i]=st[i]-'0';//字符串转int
for(int i=1;i<=n;i++)//循环要删除的数字个数次
for(int j=0;j<l;j++)//遍历整个字符串的长度
if(a[j]>a[j+1]) //给数组排序
{
for(int k=j;k<l;k++)
a[k]=a[k+1];
l--;
break;
}//排序,并且在过程中记录下删掉要求数字个输后剩余的数字个数
int i=0;
while(a[i]==0&&k<l-1) //如果被删除接着往后遍历
{k++;
i++;}
for(int i=k;i<l;i++)
cout<<a[i];
return 0;
}

posted @   slyphiette  阅读(362)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示