总结写题目遇见的问题(坑)
1.大多数的题目都可以用数组来做,但是在做OJ题目的时候,我发现有时候Wrong Answer的出现不是代码的问题,也不是算法问题,可能只是数组大小的问题,做到现在我发现对于一维数组小于100时候,有时会出现Wrong Answer即使自己测试的结果都是正确的,但是再修改数组大小大于100时就不会报错了.可以定义为:a[101]或者a[101][101].以个题目作为例子
在OJ2014(链接:http://acm.hdu.edu.cn/showproblem.php?pid=2014)
题目:青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input:输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output:对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Simple Input:
3 99 98 97
4 100 99 98 97
Simple Output:
98.00
98.50
这是一道简单的题,但是我开始做的时候因为对于初始化数组大小是
int a[100]
//正确的定义应该是a[101],数组a的大小要大于100。
OJ一直给我判定Wrong Error.然后我就一直改代码,改算法,这样一直重复,一直Wrong Error。算是自己踩过的坑吧。
2.OJ对数组的大小定义问题的坑:
以个题目作为例子当我做OJ2023题(链接:http://acm.hdu.edu.cn/showproblem.php?pid=2023)
题目:假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
Input:输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。
Output:对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。
我最初定义数组大小的方式:
while(scanf("%d %d",&m,&n)==2)
{
int count,t;
float a[m][n] , temp , average[n];
}
在我自己的编译器Dev C++上编译是没问题的,运行结果也正确。但是OJ上是会显示Compilation Error
所以说明OJ对于数组的大小必须是在定义的时候就确定它的大小.
3.格式问题的坑:
我有时候在写代码的时候可能最后一行最后一个数据输出后多输出了一个空格,这种情况会出现Compilation Error.