這個問題要注意的就是只需要直接將參數ratings中字符串連接起來就可以, 不用在每個元素後面加空格. 我開 始就以為每個元素連接的時候在後面要加空格分隔, 然後再把重復的元素去掉, 結果system test出錯了, 調試半 天不知道什麼問題. 而且題目是面也說了, 沒有相重復的數據. 由此可見, TopCoder上有些題目看似簡單, 其實有坑, 而且一般這樣的坑樣例測不出來, 然後通過了樣例就submit, system test直接就掛了, 值得一說的是, 這道題目正確率也只有%10. 代碼如下:
#include <algorithm> #include <sstream> #include <string> #include <vector> using namespace std; /************** Program Begin *********************/ class EllysRoomAssignmentsDiv2 { public: double getProbability(vector <string> ratings) { double res; int Elly; string rating = ""; for (int i = 0; i < ratings.size(); i++) { rating += ratings[i]; } vector <int> regs; istringstream iss(rating); int member = 0; while (iss >> member) { regs.push_back(member); } Elly = regs[0]; sort(regs.begin(), regs.end(), greater <int> () ); int pos = 0; for (int i = 0; i < regs.size(); i++) { if (Elly == regs[i]) { pos = i; break; } } int rooms = (regs.size() + 19) / 20; if (0 == pos) { res = 1.0; } else if (pos < rooms) { res = 0.0; } else { res = 1.0 / rooms; } return res; } };