文章目錄
-
- 題目
- 思路
- AC代碼
題目
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxSMJR0TZVHT1M1VZZjRpJXNOt0S2EUaMVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwQTO3ETN2QmZhVjY4UDOhdzY3QDZ4EmN5cTY3EDN5MzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
思路
這題比較容易,108在oj也能過就暴力循環了,用哈希+二分會不會簡單點呢。。
AC代碼
#include <bits/stdc++.h>
using namespace std;
unordered_map<string, string> m;
string s, name, func, found;
int a;
int main() {
while (getline(cin, s), s != "@END@") {//注意兩者之間要加一個逗号用以區分
a = s.find(']');
name = s.substr(0, a + 1);
func = s.substr(a + 2);
m[name] = func;
}
unordered_map<string, string>::iterator it;
int num;
scanf("%d", &num);
for (int i = 0; i < num; ++i) {
bool flag = false;
getline(cin, found);
for (it = m.begin(); it != m.end(); ++it) {
if (found == it->first) {
flag = true;
cout << it->second << endl;
} else if (found == it->second) {
flag = true;
a = it->first.size();
cout << it->first.substr(1, a - 2) << endl;
}
}
if (!flag) {
cout << "what?" << endl;
}
}
}