标题:小白在线求解答
只看楼主
bruru
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-11-11
结帖率:100%
已结贴  问题点数:20 回复次数:8 
小白在线求解答
Description
最近acm队决定对近期举行的n场比赛做一总结,以研究哪几场比赛题目难度分配正常,但苦于任务艰巨没人想做,所以就找上你啦~~~

Input
 第一行为一个正整数n(0<n<100),接下来有n行。对于每一行有9个整数,第一个整数为比赛序号,接下来八个代表第1~8题的成功解题人数。

Output
输出难度分配最简单的比赛的序号。若题号越小的题目解出的人数越多,则该比赛越简单。(当然和现实的acm赛有区别)

Samples
input
5
1 200 300 400 500 600 700 800 900
2 900 900 800 700 600 400 200 100
3 900 800 700 600 500 400 300 200
4 800 800 800 800 800 800 800 800
5 1 2 3 4 5 6 7 8
output
2
Hint
1. 以样例为例

先看第一题,做出来最多的是2、3号比赛

继续看第二题,2号做出来的比3号多

所以答案是2号

2. 序号不一定是连续的,可以是任何int类型的整数


#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    struct{
        int a;
        int b[8];
    }m[n*2+1];
    for(int i=0;i<n;i++){
        scanf("%d %d %d %d %d %d %d %d %d",&m[i].a,&m[i].b[0],&m[i].b[1],&m[i].b[2],&m[i].b[3],&m[i].b[4],&m[i].b[5],&m[i].b[6],&m[i].b[7]);
    }
    int x=0;
    int z=0;
    for(int k=0;k<8;k++){
        for(int i=0;i<n-1;i++){
            for(int j=0;j<n-i-1;j++){
                if(m[j].b[z]<m[j+1].b[z]){
                    m[2*n]=m[j+1];
                    m[j+1]=m[j];
                    m[j]=m[2*n];
                }
            }
        }//第z题的人数降序排列
        if(m[0].b[z]>m[1].b[z]){
            printf("%d\n",m[0].a);
            break;
        }//如果只有一个最大  输出
        else {
            for(int h=0;h<n;h++){
                if(m[h].b[z]!=m[z].b[z]) {
                    m[h].b[z+1]=-1;
                }
            }
            z++;
        }//让z题不是最大的结构的z+1题人数变为-1
    }
    return 0;
}
搜索更多相关主题的帖子: 在线 for 整数 int 比赛 
2022-11-15 21:56
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:10 
楼主的帖子当作答完题的总结也是可以的。

所以,你的问题呢?

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 22:36
bruru
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-11-11
得分:0 
回复 2楼 forever74
阿这
我测试了用例是感觉没啥错误
但是提交错误,我不知道哪里有问题
2022-11-15 22:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
如果最小的不止一个怎么办?

BTW: 代码太复杂了。这题就是求数组的最小值,只不过这个数组的元素本身又是一个数组而已。
2022-11-15 23:08
bruru
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-11-11
得分:0 
回复 4楼 rjsp
求最大的,如果不止一个最大,就z+1查下一题,我不会写比较简单的
2022-11-16 07:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用bruru在2022-11-16 07:31:10的发言:

求最大的,如果不止一个最大,就z+1查下一题,我不会写比较简单的

我的意思是,如果都最大怎么办?比如输入

5
1 200 300 400 500 600 700 800 900
2 200 300 400 500 600 700 800 900
3 200 300 400 500 600 700 800 900
4 200 300 400 500 600 700 800 900
5 200 300 400 500 600 700 800 900

那是输出最先的 1 呢,还是最后的 5 呢,还是所有的 1、2、3、4、5 呢?还是随便选一个,比如 3 呢?
2022-11-16 08:38
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
回复 3楼 bruru
您还是没说是什么错误,
是编译错误还是运行错误,还是多个用例有的对有的错。

如果是编译错误的话,建议您像我一样严格遵守ANSI C规范,
每个作用域开头声明本域变量,一旦有了非声明语句,就不再声明变量了,不在for的圆括号内声明变量;
数组大小用常量声明,不用变量。

我认为ANSI风格能平趟的编译环境分布得更广泛。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-16 08:40
bruru
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-11-11
得分:0 
回复 6楼 rjsp
这个我没考虑
我改过了,通过了,看样子是不用考虑的
还是考虑不周全
2022-11-16 12:33
bruru
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-11-11
得分:0 
回复 7楼 forever74
好的
现在问题已经解决了
谢谢您的建议,会继续加油的
2022-11-16 12:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510665-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057600 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved