20

P1308 [NOIP2011 普及组] 统计单词数

@[ijt1p8ul](/user/1208708) 因为 `getline` 的时候把第一行的换行符读掉了,所以要么第一行也 `getline`,要么第二行输入的时候先 `getline` 一遍,再 `getline` 需要读入的字符串
by Bingxiu @ 2023-11-29 18:48:44


@[Bingxiu](/user/676498) 改成getline就tle为啥
by Square0912 @ 2023-11-29 18:54:26


@[ijt1p8ul](/user/1208708) 你会发现本地运行都出不来结果
by GPUawa @ 2023-11-29 18:58:54


@[GPUawa](/user/781701) 怎么改
by Square0912 @ 2023-11-29 18:59:39


@[ijt1p8ul](/user/1208708) 你这代码一堆问题 `for (int i = c; s[c] != ' '; c++) {` 改成 `for (int i = c; c!=s.size()&&s[c] != ' '; c++) {` `} else if (s == kkk && flag) {` 改成 `} else if (t == kkk && flag) {`
by Bingxiu @ 2023-11-29 18:59:57


@[Bingxiu](/user/676498) ~~话说你的马蜂怎么这样~~ 还是20分,有谁会吗 ```cpp #include <bits/stdc++.h> #define cint const int #define rint register int using namespace std; string kkk, s; int cnt; bool flag = false; int ans, c = 0; void change(string _s) { for (int i = 0; i < _s.size(); i++) { if (_s[i] >= 'A' && _s[i] <= 'Z') { _s[i] += 26; } } } signed main() { // freopen(".out", "w", stdout); cin >> kkk; change(kkk); getline(cin, s); change(s); while (c != s.size()) { string t = ""; int tmp = 0; for (int i = c; c != s.size() && s[c] != ' '; c++) { if (s[c] != ' ') t[tmp++] = s[c]; } if (t == kkk && !flag) { ans = c; flag = true; cnt++; } else if (t == kkk && flag) { cnt++; } } if (flag) cout << cnt << " " << ans << endl; else cout << -1 << endl; return 0; } ```
by Square0912 @ 2023-11-29 19:37:01


@[ijt1p8ul](/user/1208708) $change$ 函数改成 `void change(string &_s) {`
by Bingxiu @ 2023-11-29 19:48:05


@[Bingxiu](/user/676498) 还是20pts呀
by Square0912 @ 2023-11-29 20:41:32


|