为啥只有20分??回复必关注!
查看原帖
为啥只有20分??回复必关注!
1441745
heathera楼主2024/9/15 23:41

这段代码我自己咋试咋对,但是测试点只有6和7过了,为啥啊??

#include<stdio.h>
#include<string.h>
int main()
{
    //输入字符串,并把字符串拼接起来
    char str[200],test[40000];
    scanf("%s",str);
    int n=strlen(str);
    strcat(test,str);//把第一行字符数组str拼接到test中,单独拼第一行的目的是得到字符串的长度(即n的值)
    for(int i=2;i<=n;i++)//第一行已经拼了,从第二行开始
    {
        scanf("%s",str);
        strcat(test,str);
    }
    printf("%d ",n);

    //比较字符数组中相邻的字符是否相同,同时注意从0开始
    int time=0;
    for(int i=0;i<n*n;i++)
    {
        int count=0;
        if(time==0&&i==0)//检查第一个数是不是1,如果是1要跳过1的部分,但是能且仅能跳过开头的一次
        {
            if(test[i]!='0')
            printf("0 ");
            {
                for(;test[i]!='0';)
                {
                    time++;
                    i++;
                }
            }
        }
        while(test[i]==test[i+1])
        {
            count++;
            i++;
        }
        if(count!=0)//数表全1时需要特判
            printf("%d ",count+1);//有m对数字比较相同,则共m+1个相同数字
        else
            printf("%d ",count);
    }
    return 0;
}

/*
先把所有数码暂存在字符数组str里,再使用strcat冲掉换行符并逐行拼接字符串进text中;
输出边长n;
搞一个循环,循环条件就是i<n*n;
然后逐个比较当前数组元素与下一元素,如果相同则count++;如果不同则count+1后跳出循环(例如0001就是count++两次再+1就跳出循环);然后输出count
(注意每次循环要把count归零)
*/

2024/9/15 23:41
加载中...