当前位置: > c语言删数问题...
题目
c语言删数问题
【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小.
【输入形式】输入有两行:
1.第一行是大整数S.其中S最长可达240位.
2.第二行是整数N.S、N均以非0数字开头.
【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’.
【样例输入1】
178543
4
【样例输出1】13
【样例输入2】
1002
1
【样例输出2】002
【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小.正确答案为S’ = 13.样例2中输入整数S=1002,N=1,删完一位后S’ = 002,而不是2,即2之前的0也必须输出.
我是这样做的,为什么不行
#include
int main()
{
char n[240],m[240];
int s,k=0,i=0,j;
x09j=strlen(n);
scanf("%s %d",&n[i],&s);
x09for(i=0;i

提问时间:2021-12-20

答案
 题意绕来绕去,其实就是给你一个N位数,让你去掉K位,使得剩下的(N - K)位数最小.
        这一道题目是一个贪心的算法,贪心的策略是将单调递减区间的第一个数字删掉,如果整个字符串已经单调递增排列的话,将最后一个删除.
代码:
# include<iostream>
# include<string>
using namespace std;

int main()
{
   int k;
   string s;
   string::size_type i;
   while(cin>>s>>k)
   {
       while(k)
       {
           for(i=0;i!=s.size()-1 && s[i]<=s[i+1];++i);
           s.erase(i,1); k--;
       }
       cout<<s<<endl;
   }
   return 0;
}
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
版权所有 CopyRight © 2012-2019 超级试练试题库 All Rights Reserved.