题目链接:http://118.190.20.162/view.page?gpid=T8
思路:模拟
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
#include <map>
#include <set>
using namespace std;
map<char,string> choice;
struct line{
map<char,string> q;
}E[30];
int main() {
string format;
cin>>format;
for(int i=0;i<format.size();i++){
char command=format[i];
if(format[i+1]==':')
{
choice[command]="Yes";
i++;
}
else
{
choice[command]="No";
}
}
int n;
cin>>n;
getchar();
string cline;
for(int i=0;i<n;i++){
getline(cin,cline);
int j;
for(j=0;j<cline.size();j++){
if(cline[j-1]==' '&&j>=1) {
if (cline[j] == '-') {
j++;
// cout << "cline[j]=" << cline[j] << endl;
if (choice[cline[j]] == "No") {
//保存无参数命令
E[i].q[cline[j]] = "SunRuiBin";
} else if (choice[cline[j]] == "Yes") {
int tmp_j;
tmp_j = j + 2;
string tmp_param;
while (cline[tmp_j] != ' ' && tmp_j < cline.size()) {
tmp_param += cline[tmp_j];
tmp_j++;
}
// 如果没找到参数,就结束
if(tmp_param==""){
break;
}
E[i].q[cline[j]] = tmp_param;
j = tmp_j;
} else {
break;
}
}
else
{
break;
}
}
}
}
map<char,string>::iterator iterator1;
for(int i=0;i<n;i++) {
printf("Case %d:",i+1);
for (iterator1 = E[i].q.begin(); iterator1 != E[i].q.end(); iterator1++) {
cout<<" -"<<iterator1->first;
if(iterator1->second!="SunRuiBin"){
cout<<" "<<iterator1->second;
}
}
cout<<endl;
}
cout<<endl;
return 0;
}