52wyd @ 2022-11-03 13:31:08
只能得20分,好心人帮我看看代码怎么改
#include <stdio.h>
#include <string.h>
char str[41000], s[210];
int main(void)
{
int n, flag = 0, i, j;
scanf("%s", str);
n = strlen(str);
for (i = 1; i <= n - 1; i ++)
{
scanf("%s", s);
strcat(str, s);
}
printf("%d", n);
for (i = 1; i <= n * n - 2; i ++)
{
if (flag == 0 && str[i] != str[0])
{
printf(" %d", i);
flag = 1;
}
for (j = i + 1; j <= n * n - 1 && flag == 1; j ++)
{
if (str[j] != str[i])
{
printf(" %d", j - i);
i = j - 1;
if (j == n * n - 1)
{
printf(" 1");
flag = 2;
}
break;
}
if (j == n * n - 1 && str[j] == str[i])
{
printf(" %d", j - i + 1);
flag = 2;
break;
}
}
if (flag == 2)
break;
}
if (flag == 0)
printf(" %d\n", n * n);
return 0;
}
by Terrible @ 2022-11-03 13:47:58
@zzulijk 如果输入第一个数是1的话,那么输出的第一个数是 0,因为
第一个数表示连续有几个
\texttt 0 ,
你这个程序不能处理上述这种情况.
当然这个说法的指代可能有点含糊,因为很难讲清 0 个 0 是不是 “有”的概念,至少它没有被凸显出来让做题者很容易察觉到。
by 52wyd @ 2022-11-30 23:17:41
@Terrible 提交正确了谢谢你哦