问题标题: 酷町堂:2786 寻找最小数

0
0
已解决
毕小曼
毕小曼
初级光能
初级光能
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
    string s;
    int m,n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>s;
        cin>>m;
        int k=s.size();
        while(m--)
        {
            for(int i=0;i<k;i++)
            {
                if(s[i]>s[i+1] || i==k-1)
                {
                    s.erase(i,1);
                    k--;
                    break;   
                }
            }
        }
        if(s[1]=='0' && s[0]=='0')cout<<'0';
        while(s[0]=='0' && k>1)
        {
            s.erase(0,1);
        }
        cout<<s<<endl;
    }
    return 0;
} 

哪错了?

帮个忙


0
已采纳
王浩然
王浩然
新手光能
新手光能
if(s[i]>s[i+1] || i==k-1)
{
                    s.erase(i,1);
                    k--;
                    break;   
}
改成
if(s[i]>s[i+1] || i==k-1)
{
                    s.erase(i,1);
                    m--;
                    k--;
                    break;   
}
if(s[1]=='0' && s[0]=='0')cout<<'0';//删掉
while(s[0]=='0' && k>1)
        {
            s.erase(0,1);
        }
改成
while(s[0]=='0' && k>1)
        {
            k--;
            s.erase(0,1);
        }

还要在第二重循环判断空串的情况

王浩然在2018-08-16 07:53:05追加了内容
if(m>=x)
			{
				flag=0;
				cout<<endl;
				break;
			}

 

王浩然在2018-08-16 07:55:03追加了内容

然后底下去0的改成这样

if(flag==1)
{
        while(s[0]=='0' && k>1)
        {
            k--;
            s.erase(0,1);
        }
}

 

0
我要回答