程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> SRM 577 Div II Level Two: EllysRoomAssignmentsDiv2

SRM 577 Div II Level Two: EllysRoomAssignmentsDiv2

編輯:C++入門知識

這個問題要注意的就是只需要直接將參數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;
    }
};

 

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved