isItTrue @ 2021-12-14 17:54:28
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
int n=1,cnt=0;
char a[205][205] = { 0 };
int b[50005] = { 0 };
int main() {
int p = 0;
cin.getline(a[0], 205);
n = strlen(a[0]);
for (int i = 1; i < n; i++) {
cin.getline(a[i], 205);
}
for (int j = 0; j < n; j++)//行
{
for (int k = 0; k < n; k++)//列
{
if (k == n - 1 && a[j][k] == a[j + 1][0])
cnt++;
else if (a[j][k] == a[j][k + 1])
cnt++;
else
{
b[p++] = cnt + 1;
cnt = 0;
}
}
}
cout << n<<" ";
if ((a[0][0] - '0')) cout << "0 ";
for (int i = 0; i < p; i++)
{
cout << b[i] << " ";
}
cout << "\n";
return 0;
}
by ud2_ @ 2021-12-14 18:04:24
虽然和问题无关,但为什么用 std::cin.getline
而不是 std::getline
?
by isItTrue @ 2021-12-17 18:26:06
@ud2_ 网上看到的。 不知道有什么区别 请大佬讲解
by ud2_ @ 2021-12-17 18:35:13
前者读 C 字符串,后者读 C++ 字符串。
但无论怎么读,都要自己去除行末空白字符。