#用map<string,int>m,通过string映射一个编号,再通过编号来在数组int f[N]中获取一个值为什么会出错?
#题目链接https://blog.csdn.net/qq_46373141/article/details/124276794
#交题链接https://pintia.cn/problem-sets/1635264548121292800/exam/problems/1636695635989049355
#问题代码
```c++
#include <iostream>
#include <string>
#include <map>
using namespace std;
const int MAXN = 100010;
map<string, int> mp;//相关步骤
int f[MAXN];
int main()
{
int n, s;
cin >> n >> s;
for ( int i = 0; i < n; i ++ ){
string s1;//相关步骤
cin >> s1;//
mp[s1] = i;//
}
for ( int i = 1; i <= n / s; i ++ )
for ( int j = 1; j <= s; j ++ )
cin >> f[i * s - j];//相关步骤
int k;
cin >> k;
string num;//相关步骤
while ( k -- ) {
cin >> num;
if ( f[mp[num]] ) cout << f[mp[num]] << endl;//相关步骤
else cout << "Wrong Number\n";
}
return 0;
}
#正确代码
```c++
#include <iostream>
#include <string>
#include <map>
using namespace std;
const int MAXN = 100010;
map<string, int> mp;
string str[MAXN];
int main(void)
{
int n, s;
cin >> n >> s;
for ( int i = 0; i < n; i ++ )
cin >> str[i];
for ( int i = 1; i <= n / s; i ++ )
for ( int j = 1; j <= s; j ++ )
cin >> mp[str[i * s - j]];
int k;
cin >> k;
string num;
while ( k -- ) {
cin >> num;
// count是STL库自带的函数,计算容器中值出现的次数
if ( mp.count(num) ) cout << mp[num] << endl;
else cout << "Wrong Number\n";
}
return 0;
}