思路:问题的关键在于对字符串的处理,如果用正则表达式简化对字符串的处理,这题基本没什么难度
#include <bits/stdc++.h>
using namespace std;
int main() {
int T,n;
scanf("%d",&T);
for(int t=0; t<T; ++t) {
scanf("%d",&n);
map<string,vector<int>> mp;
string name,s;
char str[100],temp[100],num[100];
for(int i=0; i<n; ++i) {
scanf("%s",str);
s=str;
int key=-1;
if(s.find(".")!=string::npos) {
if(s.find("sort")!=string::npos) {
sscanf(str,"%[^.]",temp);
name=temp;
sort(mp[name].begin(),mp[name].end());
} else {
sscanf(str,"%[^.]%*[^0-9]%d",temp,&key);
name=temp;
mp[name].push_back(key);
}
} else if(s.find("=")!=string::npos) {
sscanf(str,"%[^=]",temp);
name=temp;
mp[name].clear();
} else {
sscanf(str,"%[^[]%*c%[^]]",temp,num);
sscanf(num,"%d",&key);
name=temp;
if(key>=mp[name].size()) puts("ERROR");
else printf("%d\n",mp[name][key]);
}
}
}
return 0;
}
在这里插入代码片