个人觉得是因为您的 $a_i$ 和 $b_i$ 都多读入了 $1$ 个,所以统计答案时答案会多 $1$ 个。
by _XOF_ @ 2023-05-14 17:24:43
@[Lijuncheng1207](/user/612152)
很简单,第一个for循环从i从1开始
by jtshw @ 2023-05-14 17:24:58
@[jtshw](/user/737453) 试过了10分
by lijuncheng_1207 @ 2023-05-14 17:27:48
@[_XOF_](/user/542221) 试过了10分
by lijuncheng_1207 @ 2023-05-14 17:28:00
@[Lijuncheng1207](/user/612152)
将第二个循环的 $i=0$ 改为 $i=1$ 后即可直接输出 $ans$。亲测有效。
by _XOF_ @ 2023-05-14 17:34:06
@[_XOF_](/user/542221)
十分感谢!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
by lijuncheng_1207 @ 2023-05-14 17:37:09
@[Lijuncheng1207](/user/612152) 以样例为例,输入 `n` 和 `m` 之后光标在这个位置:
```text
1 2|
WC
CLASS
WC
```
首先看第一个循环,其条件是 `i <= n`,共 `n + 1` 次迭代。`getline` 会输入当前行的剩余内容,并把光标移到下一行开头。既然首次迭代(`i == 0`)中光标在第一行末尾,那么令 `a[0]` 为 `""` 并把光标放在第二行开头:
```text
1 2
|WC
CLASS
WC
```
接下来的 `n` 次迭代(`i` 的值为 `1` 到 `n`)按期望执行:
```text
1 2
WC
|CLASS
WC
```
`cnt` 最终的值是 `{{"", 1}, {"WC", 1}}`。
---
来到第二个循环,条件是 `i <= m`,共 `m + 1` 次迭代。前 `m` 次迭代(`i` 为 `0` 到 `m - 1`)正常输入:
```text
1 2
WC
CLASS
WC
|
```
因为最后一次迭代(`i == m`)到达文件末尾,所以 `b[m]` 被置空。`cnt` 里刚好有空串,`ans` 由此被多加了 `1`。
by ud2_ @ 2023-05-14 17:39:24
@[Lijuncheng1207](/user/612152) 不可能,除非你最后ans-1没改(我测过)
by jtshw @ 2023-05-14 17:42:19
另外,“把光标移到下一行开头”的正常写法是 `cin.ignore(numeric_limits<std::streamsize>::max(), '\n')`。
by ud2_ @ 2023-05-14 17:45:21
**感谢大家的帮助!!!!!**
by lijuncheng_1207 @ 2023-05-14 17:45:51