【发布时间】:2019-11-28 17:58:36
【问题描述】:
所以基本上我正在尝试解决一个计算矩阵中足球队排名的问题。
首先,您输入一个整数,表示团队的数量。
然后在接下来的几行中,您在矩阵中输入目标。 a[i][j] 元素表示我为团队 j 完成的目标数量。 赢 = 3 分
并列 = 双方各得 1 分
输 = 0 分
积分越高,排名就越好。如果得分与其他人相同,则净胜球较高的球队将获得更好的排名。 (我无法写出目标差异部分)。
因此,如果您输入这样的目标,第一行将是团队 a,第二行是团队 b,依此类推。
3 //Means 3 teams will be entered
0 1 2
0 0 0
3 1 0
当我想说团队使用 ASCII 代码以 a、b 等进行排名时,我在这部分遇到了问题。 (+净胜球部分)
有什么帮助吗?
我尝试编写的代码,但显示奇怪的字符:
#include <iostream>
using namespace std;
int main()
{
int goals[28][28], scores[28]{}, goaldiff[28]{}, t = 0, Final[28];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> goals[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) continue;
if (goals[i][j] > goals[j][i])
scores[i]+= 3;
if (goals[i][j] == goals[j][i])
scores[i]++;
}
}
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
if (i == j) break;
goaldiff[i] += goals[i][j] - goals[j][i];
}
}
//Sorts score array and place them in Final array.
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (scores[i] > scores[j])
t++;
}
Final[t] = scores[i];
t = 0;
}
for (int k = n-1; n > 0; k--){
for (int i = 0; i < n; i++) {
if (Final[k] == scores[i]){
char team = 'a';
team = (int)team + i;
cout << team;
break;
}
}
}
return 0;
}
预期输出(例如,如果团队 i = 3 是 #1,团队 i = 1 是 #2,团队 i = 2 #3):
cab
C 代表矩阵中的 i = 3 队(有 3 1 0 个进球)。
A 代表矩阵中 i = 1 的球队(有 0 1 2 个进球)。
B 代表矩阵的 i = 2 队(有 0 0 0 个进球)。
注意:这个矩阵的 i=j 元素为 0(例如 a[2][2]),因为团队不与自己玩(团队 2 不玩自己),所以 @987654325 @ 元素应该被忽略。
【问题讨论】:
-
我不明白“2”的含义,它似乎与您的描述不符。
-
@Yunnosch 什么 2?
-
3x3 值样本的第一行第三列。搜索“2”,该数字的所有其他匹配项都在“28”秒内。
-
@Yunnosch 2 是矩阵的 [1][3] 元素。这意味着团队 [1] 为团队 [3] 完成了 2 个目标。
-
输出是什么,预期输出是什么?
标签: c++