HDOJ 1004 水題(但有值得注意的地方)
阿新 • • 發佈:2018-12-18
題意:統計出現最多次數的單詞
code1:
注意這個 需要判斷 是否越界(while迴圈位置),
#include<bits/stdc++.h> using namespace std; /* 題目很簡單 但是需要注意的是 最後幾個相等 的時候 會出現 陣列越界的問題 */ int main() { string color; int n; while(cin >> n && n!=0){ vector<string> vec; for(int i = 0; i < n; ++i){ cin >> color; vec.push_back(color); } sort(vec.begin(),vec.end()); int i,ans = 0,len; string pop = vec[0]; for(i = 1; i < vec.size();){ len = 1; while(i < vec.size() && vec[i-1] == vec[i]){ ++i; ++len; //cout << vec[i] << endl; } if(len > ans){ ans = len; pop = vec[i-1]; } ++i; } cout << pop << endl; } return 0; }
code2: map
#include<bits/stdc++.h> using namespace std; typedef map<string,int> msi; int main() { string color; int n; ios::sync_with_stdio(false); cin.tie(NULL); while(cin >> n && n != 0){ msi mp; for(int i = 0; i < n; ++i){ cin >> color; ++mp[color]; } msi::iterator it = mp.begin(); int ans = -1; string pop; for(;it != mp.end(); ++it){ if(it->second > ans){ ans = it->second; pop = it->first; } } cout << pop <<endl; } return 0; }