【问题标题】:Soccer table of scores match足球比分匹配表
【发布时间】: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++


【解决方案1】:

您的代码打印的内容似乎是一个秘密,我懒得手动获取输入。无论如何,这是:

 team += (int)team + (k-n+1);

不可能是正确的。相当于:

 team = team + team + (k-n+1); 

这是

 team = 2*team + (k-n+1);

如果team'a' 的ascii 码开头,那么经过这个计算之后,它就会很遥远。

你应该做的是:打印团队的索引,看看你的其余代码是否做了它应该做的事情。只有当您知道算法没问题时,才应该关注漂亮的打印。

【讨论】:

  • 那行应该是:team = (int)team + i; 它修复了奇怪的字符部分,但它打印了许多 a/b/c 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多