| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include <bits/stdc++.h>
 
 - using namespace std;
 
 - typedef long long ll;
 
 - int main()
 
 - {
 
 -     int n, m, k;
 
 -     string str;
 
 -     vector<map<string, int> > vec;
 
 -     cin >> n;
 
 -     for(int i = 0; i < n; ++i) {
 
 -         cin >> k;
 
 -         for(int j = 0; j < k; ++j) {
 
 -             cin >> str;
 
 -            [color=Red] vec[i][str] = 1;  [/color]  //引起程序卡死的语句
 
 -         }
 
 -     }
 
 -     cin >> m;
 
 -     vector<string> s;
 
 -     for(int i = 0; i < m; ++i) {
 
 -         cin >> str;
 
 -         bool flag = false;
 
 -         for(int j = 0; j < n; ++j) {
 
 -             if(vec[j][str]) {
 
 -                 flag = true;
 
 -                 break;
 
 -             }
 
 -         }
 
 -         if(!flag) s.push_back(str);
 
 -     }
 
 -     for(int i = 0; i < s.size() - 1; ++i) cout << s[i] << " ";
 
 -     cout << s[s.size() - 1] << endl;
 
 -     return 0;
 
 - }
 
  复制代码 
 
上述代码:测试用例为: 
- 3
 
 - 3 11111 22222 55555
 
 - 2 33333 44444
 
 - 4 55555 66666 99999 77777
 
 - 8
 
 - 55555 44444 10000 88888 22222 11111 23333 88888
 
  复制代码 
 
但是输完第二行程序就因为而卡死,  是不能这样用吗,求dalao指点一下
- #include <bits/stdc++.h>
 
 - using namespace std;
 
 - typedef long long ll;
 
 - int main()
 
 - {
 
 -         int n, m, k;
 
 -         string str;
 
 -         vector<map<string, int> > vec;
 
 -         cin >> n;
 
 -         for(int i = 0; i < n; ++i) {
 
 -                 cin >> k;
 
 -                 for(int j = 0; j < k; ++j) {
 
 -                         cin >> str;
 
 -                         //vec[i][str] = 1;
 
  
-                         vec.push_back(std::map<std::string, int>{{ str, j}});
 
 -                 }
 
 -         }
 
 -         cin >> m;
 
 -         vector<string> s;
 
 -         for(int i = 0; i < m; ++i) {
 
 -                 cin >> str;
 
 -                 bool flag = false;
 
 -                 for(int j = 0; j < n; ++j) {
 
 -                         if(vec[j][str]) {
 
 -                                 flag = true;
 
 -                                 break;
 
 -                         }
 
 -                 }
 
 -                 if(!flag) s.push_back(str);
 
 -         }
 
 -         for(int i = 0; i < s.size() - 1; ++i) cout << s[i] << " ";
 
 -         cout << s[s.size() - 1] << endl;
 
 -         return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |