用的最容易想到的方法,为什么通过率90%,请大神指教

//请路过的大神看一看,为什么通过率90%
#include<stdio.h>
main(){
    int n;
    scanf("%d",&n);
    int b[n][2];
    for(int i=0;i<n;i++){            //全部赋值为0
        for(int j=0;j<2;j++){
            b[i][j]=0;
        }
    }
    for(int i=0;i<n;i++){             //列下标为0 存每一个输入的数
        scanf("%d",&b[i][0]);
    }    
       
    for(int i=0;i<n;i++){              
        for(int j=0;j<n;j++){
            if(b[i][0]==b[j][0]){
                b[i][1]++; // 列下标为1 存每一个数出现的次数         
                        }
        } 
	}
    int maxIndex=0;
    for(int i=1;i<n;i++){
        if(b[i][1]>b[i-1][1]){
            maxIndex=i;                // 记录出现次数最多的数的下标
        }
    }
    printf("%d",b[maxIndex][0]);
}                                    

全部评论
最后的选最大值有问题,如果b[0][1]=10,b[1][1]=3,b[2][1]=5的话,在判断b[0][1]和b[1][1]的大小关系时,保持不变,但当判断b[1][1]和b[2][1]时,由于b[2][1]大于b[1][1],所以会把b[2][1]的值赋给maxIndex,这样结果就是出现了5次的数字,而不是出现10次的数字。
1 回复
分享
发布于 2020-11-28 09:39

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务