函数$\operatorname{findfor}$的时间复杂度是O(n)的,稍微有点大,可以使用STL的map解决,或者写个哈希取模到能开数组的大小,或者采用Trie。其时间复杂度为后者最优,中者次之,第一最慢,不过STL里还有个容器叫hash_map,是基于哈希的一个容器,不过他不在c++语言标准中,有的比赛可能用不到。但幸运的是,对于这道题来说,使用map就足够了
by wan123 @ 2021-07-14 06:32:44
@[芝麻馅儿汤圆](/user/53141)
我们来看代码:
```cpp
for (int i = 1; i <= M; i++)
```
```cpp
int M, N;
```
```cpp
cin >> M >> N;
```
```cpp
cin >> M;
for(int i = 1; i <= M; i++)
```
这四处代码表现了一个问题:您将变量 M 使用了两次,导致函数 ```
findfor``` 使用了多次不同数值的 M ,所以出错。
建议加变量 K ,区分 M 和 K 的数值区别。
```cpp
int M, N, K;
```
```cpp
for (int i = 1; i <= M; i++)
```
```cpp
cin >> K;
for(int i = 1; i <= K; i++)
```
by Hellen68 @ 2021-07-31 21:47:40