乒乓球比赛(C++)

描述

学校的乒乓球赛就要举行了。

某个班的同学们都喜欢打乒乓球,都强烈希望代表班级去比赛。

但是由于名额限制,他们之中只能由一个人被选作代表。

为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。

赢得最多比赛的人就将代表班级去比赛。

现在班主任手里有一份表,表里面记录了每一场比赛的比分。

她应该让谁去比赛?

输入
输入包含一组测试数据。

第一行包含n(2 <= n <= 100),表示班级学生的数目。

接下来给出一个 n × n 矩阵。

矩阵的每一个元素都是0,1、2,3中的一个。

第 i 行第 j 列的元素 aij 是第 i 个学生在和第 j 个学生的比赛中赢的局数。

aij 和 aji(i ≠ j)正好有一个是3,另外一个小于3。

矩阵的所有对角线元素都是0。

输出
输出赢了最多比赛的学生的编号。如果有平分,选择编号最小的。

输入样例 1

4
0 0 3 2
3 0 3 1
2 2 0 2
3 3 3 0
输出样例 1

4
语言:
C++
这是我的代码:

#include<iostream>
using namespace std;

int n ; 
int s[6][6] ;

void shuru() {
    for( int i = 1 ; i <= n ; i ++) {
        for( int k = 1 ; k <= n ; k ++) {
            cin>>s[i][k] ;
        }
    }
}

int get_count(int x) {
    int m = 0 ;
    for( int i = 1 ; i <= n ; i ++) {
        if( 3 == s[x][i] ) {
            m++ ;
        }
    }
    return m ;
}

void solve(){
    shuru() ;
    
    int mi = 0 ;
    int mx = 0 ;
    
    for( int i = 1 ; i <= n ; i ++ ) {
        int m = get_count(i) ;
        if( m > mx ) {
            mi = i ;
            mx = m ;
        }
    }
    cout << mi << endl ;
}

int main(){
    //freopen("083.txt", "r", stdin) ;
    while(cin>>n) {
        solve() ;
    }
    return 0 ;
}

但是错了,求大家修改

【以下回答由 GPT 生成】

最初的代码有点混乱和不完整。这里是修改过的代码:

#include<iostream>
using namespace std;

const int MAXN = 105;
int s[MAXN][MAXN];

void shuru(int n) {
    for(int i = 1; i <= n ; i++) {
        for(int j = 1; j <= n ; j++) {
            cin >> s[i][j] ;
        }
    }
}

int get_count(int x, int n) {
    int m = 0 ;
    for(int i = 1; i <= n ; i++) {
        if(i != x && s[x][i] == 3) {
            m++ ;
        }
    }
    return m;
}

void solve(int n){
    shuru(n);

    int mi = 1 ;
    int mx = get_count(mi, n);

    for(int i = 2 ; i <= n ; i++) {
        int m = get_count(i, n) ;
        if(m > mx) {
            mx = m ;
            mi = i ;
        }
    }
    cout << mi << endl ;
}

int main(){
    int n;
    while(cin >> n) {
        solve(n);
    }
    return 0 ;
}

这样修改后应该输出正确的结果。



【相关推荐】


  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7793672
  • 除此之外, 这篇博客: 指针和数组试题解析(重置版)中的 小编,在这里想说一下,c语言的最后一节 C预处理,可能还需要一些时间,因为小编,昨天才下载了虚拟机 和 linux 系统,还没开始安装。所以无法着手写,因为 C预处理,vs2013很难表达,也就意味可能会讲不清楚。所以这篇文章可能需要点时间,再加上小编初期的文章,是没有排版的(而且可能有些错误,请大家以重置版为准),所以这几天我就把这些重新写。有兴趣的朋友可以看看。(ps:如果哪一天没有更新,意味着小编正在努力学习,为了能给大家呈现一片详细好懂的文章。) 部分也许能够解决你的问题。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

int s[6][6] ;
你这个数组才6x6,太小了,起码101,因为你题目要求(2 <= n <= 100)
而且你为啥下标从1开始,白白浪费一个空间。。。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632