囧。 同样的题目在PKU上过了。 HOJ上总是超时。。。
istringstream 可将整行字符串由空格分开成一个个连续字符串。
代码如下:
#include < iostream > #include < sstream > #include < algorithm > #include < map > #include < cstdio > using namespace std; int main() { int se; cin >> se; for ( int c = 1 ; c <= se; c ++ ) { cout << " Scenario # " << c << " :\n " ; int n, m; cin >> n; map < string , int > ma; string tmp; while (n -- ) { cin >> tmp; sort(tmp.begin() + 1 , tmp.end() - 1 ); ma[tmp] ++ ; } cin >> m; getchar(); while (m -- ) { int sum = 1 ; getline(cin, tmp); istringstream is (tmp); string w; while ( is >> w) { sort(w.begin() + 1 , w.end() - 1 ); sum *= ma[w]; } cout << sum << endl; } cout << endl; } return 0 ;}