1 条题解

  • 0
    @ 2025-8-24 21:23:44

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar volatile
    等下次能改名字了,而且橙名了,我就把名字给改掉,看你们还认不认得出我

    搬运于2025-08-24 21:23:43,当前版本为作者最后更新于2025-06-01 12:56:51,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    先读入一行字符串 bb,容易发现,这一行字符串的长度就是 NN。接着继续读入字符串

    while(cin>>a){
        b+=a;
    }
    

    这一步的目的是将多行字符串拼接为一行。

    接下来特判:如果 b0b_0 也就是字符串的第一位不是 00,那么 00 的数量就是 00,要先输出。

    if(b[0]!='0') cout<<"0 ";

    然后遍历字符串从 b1b_1bN2b_{N^2},用变量 tt(初始为 11)记录,如果 bi=bi1b_i=b_{i-1},那么 tt 增加,否则输出 tt,将 tt 赋值为 11

    循环结束后不要忘记在输出 tt

    代码

    #include<iostream>
    #include<string>
    using namespace std;
    int n,x,num=0,t=1,ans=0,cnt=1;
    string a,b;
    int main(){
    	cin>>b;
    	n=b.size();
    	cout<<n<<" ";
        while(cin>>a){
        	b+=a;
    	}
        if(b[0]!='0') cout<<"0 ";
    	for(int i=1;i<n*n;i++){
    		if(b[i]==b[i-1]){
    			t++;
    		}
    		else{
    			cout<<t<<" ";
    			t=1;
    		}
    	}
        cout<<t;
        return 0;
    }
    
    • 1

    信息

    ID
    318
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者