Shy_Vector @ 2024-08-11 17:46:34
#include <iostream>
using namespace std;
int ans[40000] = {0}; // 维护输出答案
int main() {
char ch, prev; // 一前一后用来比较字符是否被切换
prev = getchar();
int count = 1, ans_index = 1, N = 1;
while ((ch = getchar()) != EOF) {
if (ch != '0' && ch != '1') { // 换行了
if (!ans[0]) // 边长还没有答案的时候
ans[0] = N; // 用来输出边长
continue;
}
N++; // 统计第一行边长
if (ch != prev) { // 字符切换的时候
prev = ch; // 更换字符
ans[ans_index++] = count; // 将答案抄写在答题卡上
count = 0; // 对新字符重新计数
}
count++; // 当前字符计数
}
ans[ans_index++] = count; // 答题卡最后一个空还没来得及抄上去,补上
for (int i = 0; ans[i]; i++) {
cout << ans[i] << ' '; // 交卷
}
return 0;
}
by YWHHDJSer @ 2024-08-11 18:47:04
题目中说交替输出连续0与1的长度,也就是如果开头第一个数是1,第一段连续的0的长度为0,要先输出一个0。
by YWHHDJSer @ 2024-08-11 18:47:48
@Shy_Vector 球关。
by Shy_Vector @ 2024-08-11 19:04:53
是我没审好题,多谢!