问题标题: 2786如果让我对了,采纳前酷町豆加到300!!!

0
0
已解决
董子墨
董子墨
中级天翼
中级天翼

新网站网址

旧网站网址

WA58代码:

#include<iostream>
using namespace std;
int main(){
	string a;
	int n,m,l;
	cin>>m;
	while(m--){
		cin>>a>>n;
		if(n>=a.size()){
			cout<<0;
			continue;
		}
		l=a.size();
		while(n--)
			for(int i=0;i<l;i++)
				if(i==a.size()-1||a[i]>a[i+1]){
					a.erase(i,1);
					l--;
					break;
				}
		while(a[0]=='0'&&l>1){
			a.erase(0,1);
			l--;
		}
		cout<<a<<endl;
	}
	return 0;
}

求速速大佬解答!!!

如果让我AC了,采纳是酷町豆加到100!!!

注:请不要发以前的网址

董子墨在2020-06-01 11:54:23追加了内容

也不要发与问题无关的内容,如:

你的代码我看不懂呀!

你还不让发网址~~无奈

……

董子墨在2020-06-01 11:58:10追加了内容
#include<iostream>
using namespace std;
int main(){
    string a;
    int n,m,l;
    cin>>m;
    while(m--){
        cin>>a>>n;
        if(n>=a.size()){//如果删除的位置大于数字的位数,则输出0
            cout<<0;
            continue;
        }
        l=a.size();//储存位数
        while(n--)
            for(int i=0;i<l;i++)//遍历字符串
                if(i==a.size()-1||a[i]>a[i+1]){//如果符合删除条件
                    a.erase(i,1);//删除
                    l--;//位数减1
                    break;
                }
        while(a[0]=='0'&&l>1){//删除数首的0
            a.erase(0,1);
            l--;
        }
        cout<<a<<endl;//输出
    }
    return 0;
}

 

董子墨在2020-06-02 19:09:46追加了内容

顶顶顶

董子墨在2020-06-02 19:25:40追加了内容

如果让我AC了,采纳前酷町豆加到300!!!

董子墨在2020-06-02 19:32:42追加了内容

董子墨在2020-06-03 18:42:18追加了内容

新代码(仍然是58分)如下:

#include<iostream>
#include<cstdio>
using namespace std;
string mn;
int main() {
	int t,m;
	cin>>t;
	string a,a1;
	while(t--) {
		cin>>a>>m;
		while(a[0]=='0'&&a.size()>1)
			a.erase(0,1);
		while(m--) {
			a1=a;
			mn=a1.erase(0,1);
			for(int i=1; i<a.size(); i++) {
				a1=a;
				mn=min(mn,a1.erase(i,1));
			}
			a=mn;
		}
		while(a[0]=='0'&&a.size()>1)
			a.erase(0,1);
		if(a==""){
			cout<<"0\n";
			continue;
		}
		cout<<a<<endl;
	}
	return 0;
}

 

董子墨在2020-06-11 18:47:20追加了内容

已ac


0
已采纳
臧鸿志
臧鸿志
初级天翼
初级天翼

贪心思路,类比1200寻找最大数,先看这道题怎么写的。

在此思路的基础上,多对0的特殊判断。开头为0的不输出,这一步可以通过1个标志位+判断是否为0实现。这个思想可以在1373 1468题目中体现。

由于会存在都为0的情况,所以这个标志位可以改为计数,这样就可以比较轻松地判断全为0的情况了。

1
董宇昊
董宇昊
初级启示者
初级启示者

大佬,你的代码我看不懂呀!

你还不让发网址~~无奈

0
王泽宇
王泽宇
初级光能
初级光能

string s;
    int n,m;
    cin>>n;
    while(n--){
        cin>>s>>m;
        for(int i=1;i<s.size();i++){
            if(s[i]<s[i-1]&&m>0){
                s.erase(i-1,1);
                i=0;
                m--; 
            }
        }
        for(int i=s.size()-1;i>=0;i--){
            if(m>0){
                s.erase(i,1);
                m--;
            }
        }
       \\去零自己想
        if(s.size()==0) cout<<0<<endl;
        else cout<<s<<endl;
    }

王泽宇在2020-06-08 19:46:35追加了内容

我这不算整段代码吧

王泽宇在2020-06-08 19:46:59追加了内容

提示:a[0]

王泽宇在2020-06-09 11:54:08追加了内容

求采纳

0
朱家烨
朱家烨
资深守护
资深守护

while(n--)

 

{

 

for(j=0;j<l;j++)

 

{

 

if(s[j]>s[j+1]||j==l-1)

 

{

 

s.erase(j,1);

 

l--;

 

break;

 

}

 

}

 

}

0
董子墨
董子墨
中级天翼
中级天翼

快来人呐!!!@所有酷町堂学员

0
0
张恩泽
张恩泽
高级天翼
高级天翼

我只能说这题很!简!单!

先遍历字符串,用a[i]存数,然后sort一下,再减一下,然后在遍历一下,再sort一下,加个特判,让0不在首位,再输出,就OK了。

0
曹博扬
曹博扬
初级天翼
初级天翼

不需要贪心

用sort快排就行

再加判断

对了

董子墨 我是你的超级粉丝

 

0
王子逸
王子逸
新手天翼
新手天翼

 

while(n--)

 

{

 

for(j=0;j<l;j++)

 

{

 

if(s[j]>s[j+1]||j==l-1)

 

{

 

s.erase(j,1);

 

l--;

 

break;

 

}

 

}

 

}

王子逸在2020-06-03 17:43:14追加了内容

简单到死

0
沈峻宇
沈峻宇
资深天翼
资深天翼

寻找最小数这题目我一看到,就乐了!

我会一个方法,打擂台(弱鸡,大佬别喷)

if(a<min) min=a;

在这之前定义min(最小值)和a

cin>>a;

即可

我只知道这些,希望能帮得到你

0
我要回答