问题标题: 酷町堂1200   寻找最大数怎么做?(20)

0
1
已解决
李牧之
李牧之
新手光能
新手光能
#include<cstdio>
#include<string>
using namespace std;
int main(){
    int x;
    scanf("%d",&x);
    for(int k=0;k<x;k++){
        int n;
        string s;
        s.resize(200);
        scanf("%s%d",&s[0],&n);
        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);
            puts(s.c_str());
    }
    return 0;
}

大佬教教我!谢谢1


0
已采纳
张睿杰
张睿杰
初级天翼
初级天翼
while(t--)
    {
        string n;
        int m;
        cin>>n>>m;
        while(m>0)
        {
            for(int i=0;i<n.length();i++)
            {
                if(i==n.length()-1||n[i]<n[i+1])
                {
                    n=n.erase(i,1);
                    m--;
                    break;
                }
            }
        }
        cout<<n<<endl;
    }

用擦掉函数

0
方亦欧
方亦欧
新手光能
新手光能

这一题的思路如下:

为了方便叙述,就拿一组测试数据来举例。

先读入两个变量,记为s和n,其中s为了方便操作定义成字符串类型,n为整型。

while(n>0)    //还有字符需要删除时执行操作

    for(int i=0;i<s.size();i++)

        if(i指向字符串末尾 || 当前位置的字符<下一位置的字符)

        {

            删除当前位置的字符;

            n--;

            退出for循环;

        }

最后,输出s字符串。

(你的代码我看过了,并不懂你的思路,并且是C语言的程序,没有办法直接写出来,所以给你一个思路)

0
张睿杰
张睿杰
初级天翼
初级天翼

我认为这道题可以用排序

先把每一位给排好,然后删掉后面的m个数,就可以了

0
0
我要回答