描述
学校的乒乓球赛就要举行了。
某个班的同学们都喜欢打乒乓球,都强烈希望代表班级去比赛。
但是由于名额限制,他们之中只能由一个人被选作代表。
为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。
赢得最多比赛的人就将代表班级去比赛。
现在班主任手里有一份表,表里面记录了每一场比赛的比分。
她应该让谁去比赛?
输入
输入包含一组测试数据。
第一行包含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 ;
}
这样修改后应该输出正确的结果。
【相关推荐】
int s[6][6] ;
你这个数组才6x6,太小了,起码101,因为你题目要求(2 <= n <= 100)
而且你为啥下标从1开始,白白浪费一个空间。。。