当前位置: 首页 > news >正文

Leetcode :模拟足球赛小组各种比分的出线状况

题目

题描述
在一个足球小组赛中,有4支队伍(A、B、C、D)进行单循环比赛。每两支队伍之间进行一场比赛,共进行6场比赛。比赛结果以二维整数数组的形式给出,表示每场比赛的比分。
请你根据比赛结果,确定哪两支队伍能够出线(晋级到下一轮)。
出线规则(按优先级排序):
积分高者排名靠前:胜一场得3分,平一场得1分,负一场得0分
净胜球多者排名靠前:净胜球 = 进球数 - 失球数
进球数多者排名靠前
字母顺序靠前者排名靠前:如果以上条件都相同,按队伍名称的字母顺序排列

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <windows.h>using namespace std;// 设置控制台编码为UTF-8
void setConsoleUTF8() {
#ifdef _WIN32SetConsoleOutputCP(65001);
#endif
}class Team {
public:string name;int points;int goalsFor;int goalsAgainst;int goalDifference;Team(string n) : name(n), points(0), goalsFor(0), goalsAgainst(0), goalDifference(0) {}void updateStats(int scored, int conceded) {goalsFor += scored;goalsAgainst += conceded;goalDifference = goalsFor - goalsAgainst;if (scored > conceded) points += 3;else if (scored == conceded) points += 1;}void reset() {points = 0;goalsFor = 0;goalsAgainst = 0;goalDifference = 0;}
};bool compareTeams(const Team &a, const Team &b) {if (a.points != b.points) return a.points > b.points;if (a.goalDifference != b.goalDifference) return a.goalDifference > b.goalDifference;if (a.goalsFor != b.goalsFor) return a.goalsFor > b.goalsFor;return a.name < b.name;
}vector<string> calculateQualifiedTeams(const vector<vector<int>>& matches) {vector<Team> teams = {Team("A"), Team("B"), Team("C"), Team("D")};vector<pair<int, int>> fixtures = {{0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3}};for (int i = 0; i < matches.size() && i < fixtures.size(); i++) {if (matches[i].size() < 2) continue;int t1 = fixtures[i].first;int t2 = fixtures[i].second;int s1 = matches[i][0];int s2 = matches[i][1];teams[t1].updateStats(s1, s2);teams[t2].updateStats(s2, s1);}sort(teams.begin(), teams.end(), compareTeams);return {teams[0].name, teams[1].name};
}bool runTest(const vector<vector<int>>& matches, const vector<string>& expected, const string& testName) {vector<string> result = calculateQualifiedTeams(matches);bool passed = (result == expected);cout << testName << ": " << (passed ? "PASS" : "FAILED") << endl;if (!passed) {cout << "  期望: " << expected[0] << ", " << expected[1] << endl;cout << "  实际: " << result[0] << ", " << result[1] << endl;}return passed;
}int main() {setConsoleUTF8();cout << "足球小组赛出线判定测试" << endl;cout << "======================" << endl;int totalTests = 0;int passedTests = 0;// 测试用例和期望结果vector<tuple<vector<vector<int>>, vector<string>, string>> testCases = {//测试用例1: 正常情况{{{2,1}, {1,1}, {3,0}, {2,2}, {1,0}, {2,1}}, {"A", "C"}, "正常情况 - A队优势明显"},// 测试用例2: 全平局(按字母顺序){{{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}}, {"A", "B"}, "全平局 - 按字母顺序排名"},// 测试用例3: 积分相同,比较净胜球{{{1,0}, {0,1}, {2,0}, {1,0}, {0,2}, {1,0}}, {"A", "C"}, "积分相同比较净胜球"},// 测试用例4: 积分净胜球相同,比较进球数{{{2,1}, {1,2}, {3,0}, {0,3}, {2,0}, {0,2}}, {"A", "C"}, "积分净胜球相同比较进球数"},// 测试用例5: 强队全胜{{{3,0}, {4,0}, {5,0}, {3,0}, {4,0}, {2,1}}, {"A", "B"}, "强队全胜"},// 测试用例6: 胜负交替{{{1,0}, {0,1}, {1,0}, {0,1}, {1,0}, {0,1}}, {"A", "C"}, "胜负交替"},// 测试用例7: 高比分比赛{{{5,4}, {3,3}, {2,2}, {4,3}, {1,0}, {3,2}}, {"B", "A"}, "高比分比赛"},// 测试用例8: 防守型比赛{{{1,0}, {0,0}, {0,0}, {1,0}, {0,0}, {0,0}}, {"A", "B"}, "防守型比赛"},// 测试用例9: 三队同分情况{{{1,0}, {0,1}, {2,0}, {1,0}, {0,2}, {0,1}}, {"A", "D"}, "三队同分"},// 测试用例10: 所有比赛1-0{{{1,0}, {1,0}, {1,0}, {1,0}, {1,0}, {1,0}}, {"A", "B"}, "所有比赛1-0"},// 测试用例11: D队全败{{{2,0}, {3,0}, {1,0}, {2,1}, {1,0}, {2,0}}, {"A", "B"}, "D队全败"},// 测试用例12: 复杂同分情况{{{2,2}, {1,1}, {0,0}, {2,2}, {1,1}, {0,0}}, {"B", "A"}, "复杂同分"},// 测试用例13: 极端大比分{{{10,0}, {8,0}, {6,0}, {5,1}, {4,0}, {3,2}}, {"A", "B"}, "极端大比分"},// 测试用例14: 进攻型比赛{{{3,3}, {2,2}, {4,4}, {1,1}, {3,2}, {2,3}}, {"B", "D"}, "进攻型比赛"},// 测试用例15: 字母顺序决定排名{{{1,1}, {1,1}, {1,1}, {1,1}, {1,1}, {1,1}}, {"A", "B"}, "完全相同的战绩按字母顺序"}};cout << endl;for (const auto& testCase : testCases) {totalTests++;if (runTest(get<0>(testCase), get<1>(testCase), get<2>(testCase))) {passedTests++;}cout << endl;}cout << "======================" << endl;cout << "测试结果: " << passedTests << "/" << totalTests << " 通过" << endl;if (passedTests == totalTests) {cout << "所有测试通过!" << endl;} else {cout << "有 " << (totalTests - passedTests) << " 个测试失败" << endl;}return 0;
}
http://www.dtcms.com/a/587329.html

相关文章:

  • 中国铁工建设有限公司网站WordPress部署百度广告
  • 做服装外贸网站为网站做电影花絮
  • 在哪个公司建设网站好2个淘宝可以做情侣网站么
  • 网站建设新闻 常识网站建设(中企动力)
  • 做网站用哪个软件写比较好网站开发外包公司坑
  • 做网站公奇闻司郑州汉狮自媒体网站建设要求
  • 携程的网站建设用金山文档编辑信息泄露隐私
  • 简述建设企业网站可信度的具体策略赤峰城乡建设局网站
  • 一般做网站的在哪里找织梦可以做视频网站么
  • dw免费网站模板下载做付费网站好
  • 公司网站一般用什么软件做做网站注册商标
  • 山东省建设资格注册中心网站温州市微网站制作多少钱
  • 网站建设 话术阜阳seo
  • 深圳网站建设响应式网站手表商城网站建设
  • 免费注册建网站wordpress婚庆模板下载
  • 无忧企业网站管理系统linux 搭建wordpress
  • c 做网站 知乎网站对于企业的好处
  • 对网站做数据统计的目的是什么龙岗区教育局
  • 网站建设-易速通科技网站建设4435
  • 深圳宝安住房和建设局网站官网浩森宇特北京网站建设
  • 江苏省交通建设质监网站wordpress修改固定链接404
  • 常平网站公司网站费用怎么做会计分录
  • 兰州网站建设与优化wordpress 关键词屏蔽
  • 凡科网站建设注册学校学院网站建设目标
  • h5网站制作平台网站备案 网站建设方案书
  • 潮州网站建设上海嘉定网站建设公司
  • Data Sink定义、参数与可落地示例
  • 青岛网站设计网站wordpress 评论 邮箱
  • 杭州论坛网站制作diy电子商城网站
  • 做网站页面需要的资料安徽建设工程网