问题标题: 酷町堂:1412 数字删除游戏

0
0
已解决
王紫馨
王紫馨
高级守护
高级守护

1412   数字删除游戏

题目描述 Description

小C最近在玩一个数字游戏,电脑上随机生成一个整数n(n可能很大,可能达到几十位,但最大不超过100位),然后电脑指定删除的位数m(m小于n的位数),要求使删除之后剩下的数字按照原来的次序组成一个新数最大。如一个整数90284316718358,电脑指定删除10位,删除之后按照原来次序组成的新数为9888。

输入描述 Input Description

输入为一行,分别为整数n,(n可能很大,可能达到几十位,但最大不超过100位),和指定的删除位数m(m小于n的位数),中间用单个空格隔开。

输出描述 Output Description

输出为一行,表示删除之后剩下的数字按照原来的次序组成一个最大的新数。

样例输入 Sample Input

 

90284316718358 10

样例输出 Sample Output

 

9888

 

错误代码:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
    string s;
    int n;
    cin>>s>>n;
    for(int i=0;i<n;i++)
    {
        char min=58;
        int mini;
        for(int j=0;j<s.size();j++)
        {
            if(s[j]<=min)
            {
                min=s[j];
                mini=j;
            }
        }
        s[mini]='a';
    }
    for(int i=0;i<s.size();i++)
    {
        if(s[i]<='9'&&s[i]>='0')
            cout<<s[i];
    }
    return 0;
}

怎么只有20分?

哪里错了?

帮忙指出错误,告知正确,谢谢Thanks♪(・ω・)ノ!


1
已采纳
马佳滢
马佳滢
新手天翼
新手天翼
for(int i=0;i<num.size();i++)
        {
            if(num[i]<num[i+1]||i==num.size()-1)
            {
                num.erase(i,1);
                break;
            }
        }

这是核心,老师上课讲的内容,随便说一下外面要输入一个字符串类型的一串数字和要删的个数,这个放在while里

 

0
0
杨陈卓
杨陈卓
新手天翼
新手天翼
    for(int i;i=0,n--;s.erase(i,1))
        while(i<s.size()&&s[i]>=s[i+1])
            ++i;
        while(s.size()>1&&s[0]=='0')
            s.erase(0,1);

核心

我要回答