c++实现测试用例分数计算问题
2020-07-26 15:59
393 查看
这是国外某个网站上的一个题目,觉得挺有意思的,下面分享到本篇博客中,并附上c++做法。目前题目中所给出的测试用例,和个人编写的测试用例均通过。如果有更好的方法请在评论区指出,我会将尽力将该方法呈现后一并附上。
下面是题目描述,可以自行翻译,我的英文水平有限,在此不做翻译工作。
代码如下:
#include<iostream> #include<vector> #include<algorithm> #include<unordered_map> #include<unordered_set> using namespace std; int solution(vector<string> &T, vector<string> &R) { int count = 0; int result; string pre; vector<string> vec; vector<string> res; vector<string> seq; //拿出题目 for (int i = 0; i < T[0].size(); i++) { if (T[0][i] >= '1' && T[0][i] <= '9')break; else { pre += T[0][i]; } } //确定题目的编号长度 int len = pre.size(); //取出所有的题号 for (int i = 0; i < T.size(); i++) { string lat; for (int j = len; j < T[i].size(); j++) { lat += T[i][j]; } vec.push_back(lat); } //将每个题目题号进行处理,将所有数字字号进行提取 for (int i = 0; i < vec.size(); i++) { string num; for (int j = 0; j < vec[i].size(); j++) { if (vec[i][j] >= '1'&&vec[i][j] <= '9')num += vec[i][j]; } res.push_back(num); } //统计题目的个数 //sort(res.begin(), res.end()); for (int i = 0; i < res.size(); i++) { if (seq.empty()) { seq.push_back(res[i]); } else { int flag = 1; for (int j = 0; j < seq.size(); j++) { if (res[i] == seq[j]) { flag = 0; } } if(flag) { seq.push_back(res[i]); } } } string tt = "OK"; //判断每道题目的对错情况,全对得分,其余不得分,res判断 for (int i = 0; i < seq.size(); i++) { vector<int> mark; int temp = 0; for (int j = 0; j < res.size(); j++) { if (seq[i] == res[j])mark.push_back(j); } for (int k = 0; k < mark.size(); k++) { if(R[mark[k]]==tt){ temp++; } } if (temp == mark.size())count++; } //计算分数 result = count * 100 / seq.size(); return result; } void test3() { int score; //测试用例1 //vector<string> T = { "test1a","test2b","test1","test2","test2a","test11a" }; //vector<string> R = { "OK","Runtime error","Wrong answer","Time limit exceded","OK","OK" }; //测试用例2 vector<string> T = { "test1a","test2","test1b","test1c","test3" }; vector<string> R = { "Wrong answer","OK","Runtime error","OK","Time limit exceded" }; score = solution(T, R); cout<<score<<endl; } int main(){ test3(); return 0; }
相关文章推荐
- C++代码实现梯度下降算法并给出测试用例
- 01背包问题与分数背包问题 C++实现
- 【代码】C++实现二叉树基本操作及测试用例
- 自己实现的C++智能指针的功能代码和测试用例
- C++:实现计算贷款支付额问题
- 字符串反转C++实现源码(带测试用例)
- C++实现 逆波兰表达式计算问题
- C++实现常用的平面计算几何问题求解
- 计算几何学 | 线段相交问题 | 平面扫描 | Segment Intersections: Manhattan Geometry | C/C++实现 | 曼哈顿几何
- 用C++程序实现复杂表达式的计算问题
- C++实现链表的进本操作及测试用例
- C++实现链表的基本操作及测试用例
- 【代码】C++实现广义表及其测试用例
- 【代码】C++实现二叉树基本操作及测试用例
- C++实现 逆波兰表达式计算问题
- C++实验——参赛歌手计算平均分问题:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后成绩。这里假设共有10位评委,都是按照百分制打分。
- C++实现链表的进本操作及测试用例
- 反转指向字符串反转C++实现源码(带测试用例)
- 【代码】C++实现广义表及其测试用例
- C++异常, 一个测试异常传递切割问题的程序