HDU 2023题解分析
我想说这道题我还没弄明白我错哪了,交了20多遍一直都是Runtime Error,改了N次还是不对,后来搜了一下,说是数组开小了,又把数组开大,还不对,又改发现一个平均值求错,再改,还不对,洗洗睡吧。上午用了多个测试样例,结果第对的,可还是Runtime Error,于是就搜了一个跟自己差不多的代码,发现方法一样,输出有点差别,改完后就AC,难道真是输出错了,还是for循环多了?等我想明白了再说吧……
题意:给出N个同学(N<=50),M(M<=5)门课程的成绩,求每个学生的平均成绩和每门课的平均成绩,以及各科成绩都大于平均成绩的人数
输入:多个测试样例,第一行:n, m,接着输入n行,m个 成绩
输出:第一行:n个学生的平均成绩,结果保留两位小数。第二行:m门课的平均成绩,结果保留两位小数。第三行:每门课成绩都大于平均成绩的人数
题解:首先考虑到用二维数组来处理,然后分别求出每一行的平均值(即每个学生的平均成绩),每一列的平均值(即每一门课的平均成绩),再进行每个学生每一门课的成绩与该科平均成绩的比较,统计人数。需要注意的是,用二维数组需要多次双重循环,可能会超时,所以要尽力少使用循环,注意输出的格式控制。
难点:(1)在计算每门课的平均成绩时,要注意循环范围,计算的是每一列的平均值。(2)进行成绩与平均成绩比较时要注意循环控制,是每个学生的每一门成绩都大于该课平均成绩才能让标准符号++。(3)在每次计算平津值完后注意将求和变量置为0(无论是列还是行),以便计算下一个。
代码解释:刚开始我是用数组存储每一个学生的平均成绩和每一门课的平均成绩,然后单独输出,结果是Runtime Error,至于到底是输出错误还其他错误,容我再想想……
#include
int main()
{
int a[100][10]; //定义数组记录成绩,数组尽量开大
double b[10]; //因为后面要做比较,用b[10]来存放每门课的平均成绩
int n,m,count,c,k,i,j;
double avg1,avg2; //avg1每个人的平均成绩,avg2每门课的平均成绩
double sum1,sum2; //sum1每个人的总成绩,每门课的总成绩sum2,注意类型声明为double
while(scanf("%d%d",&n,&m)!=EOF)
{
c=0;
avg1=avg2=0;
sum1=sum2=count=0;
for( i=0;i<n;i++) //输入成绩
for( j=0;j<m;j++)
scanf("%d",&a[i][j]);
for( i=0;i<n;i++) //每个人的平均成绩,对每一行求和,除以科数m
{
for( j=0;j<m;j++)
{
sum1+=a[i][j];
}
avg1=sum1/m;
if(i!=0) printf(" "); //输出每个人的平均成绩,注意输出格式
printf("%.2lf",avg1);
sum1=0;
}
printf("\n");
for( i=0;i<m;i++) //每门课的平均成绩,注意i,j,的循环范围,求和是a[j][i];即对每一列求和
{
for( j=0;j<n;j++)
{
sum2+=a[j][i];
}
avg2=sum2/n; //除以人数n
if(i!=0) printf(" "); //输出每门课的平均成绩,注意输出格式
printf("%.2lf",avg2);
sum2=0;
b[c++]=avg2; //把每门课的平均成绩记录到b[10]
}
printf("\n");
for(i=0;i<n;) //把每个学生每门课的成绩与该课平均成绩进行比较
{
k=0;
for(j=0;j<m;j++) { if(a[i][j]>=b[j]) //如果该科成绩大于平均成绩则标志K++
k++;
else
break; //如果有一科不符合则跳出循环,执行下一个学生的判断
}
if(k==m) //如果该学生的所有课成绩都大于平均成绩,则标志count++
count++;
i++; //进行下一个学生的比较
} printf("%d\n",count);//输出人数并换行
printf("\n"); //注意题目要求是每一个实例后跟一个空行
}
return 0;
}
HDU 2023题解分析的更多相关文章
- HDU 2023 求平均成绩
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU ...
- HDU - 5970 题解
题目链接 HDU - 5970 分析 很显然\(f(x,y)\)与\(f(x+y*k,y)\)的结果相同,因为它们在第一次取模后会变成相同的式子 我们再看一下数据的范围,突破口肯定在\(m\)那里 那 ...
- 传递 HDU - 5961 题解
题目传送门 分析 题目大意:给一个竞赛图,将图分成两部分,判断两部分的图是否符合传递闭包,a->b,b->c,则a->c 这道题用Floyd硬跑的显然n\({^3}\)会T 如果用b ...
- HDU1171:Big Event in HDU(多重背包分析)
通过分析,要使A>=B并且差值最小.所以只要使sum/2的容量下,B最大就Ok了 #include<iostream> #include<cstdio> #include ...
- hdu 5185 动态规划 分析降低复杂度
这题说的是 x[1]+x[2]+x[3]+…+x[n]=n, 这里 0 <= x[i] <= n && 1 <= i <= n x[i] <= x[i+1 ...
- 2014年北京网络赛 Instrusive HDU 5040 题解 优先队列
网赛的时候看了这道题,发现就是平常的那种基础搜索题. 由于加了一个特殊条件:可以一次消耗3秒或原地停留1秒. 那就不能使用简单的队列了,需要使用优先队列才行. 题意 告诉一副地图:一个起点,一个终点, ...
- HDU 5984 题解 数学推导 期望
Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative s ...
- hdu 5418 题解
第一眼看到这题,哇,这不是我刚做完的题吗?大水题!然后 这题表面很水,实际上有点坑. 题意 求经过 $ 1 - n $(不能遗漏) 并且回到 $ 1 $ 的最短路. 在看这题之前我们可以来看下这题 最 ...
- HDU 1231 题解
题面: 最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem ...
随机推荐
- 走进Groovy (二)
承接上一篇,配置好环境后,开始正式学习语法.我假设看此文的同学至少会一定的JAVA语法,因此一些太过基础的就不记录了,基本上,大家看看示例就明白了. Groovy的卖点之一,就是全兼容JAVA的语法, ...
- AAU账号分割
import win.ui; import fsys.dlg; import string.list; /*DSG{{*/ var winform = win.form(text="aard ...
- 转: Nodejs 发送HTTP POST请求实例
项目里面需要用到使用NodeJs来转发HTTP POST请求,把过程记录一下: exports.sendEmail = function (req, res) { res.send(200, req. ...
- c++11新特性(4) lambda捕捉块
lambda表达式中的方括号成为捕捉块,能够在这里指定怎样从所在的作用域中捕捉变量. 捕捉的意思是指能够在该lambda中使用该变量.即能够捕获外部变量在lambda表达式内使用. 能够使用两种方式来 ...
- JavaScipt实现倒计时方法总结
JavaScript中提供了两种实现计时.延时的方法,分别如下: 一. t = setTimeout(“function()", millisecond) 与 clearTimeout(t) ...
- 【技术引擎——汇聚IT思想之间的碰撞】
转载请注明作者和出处:http://blog.csdn.net/pearyangyang/article/details/40869825 谢谢. 这篇博客将记录我所学习的那些博客大牛,方面以后 ...
- CSS3新动画效果
CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript.CSS3动画的属性主要分为三类:transform.transition以及anim ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
- loaded some nib but the view outlet was not set
链接地址:http://www.cnblogs.com/TivonStone/archive/2012/04/20/2460116.html 当使用 initWithNibName 函数, 并使用 由 ...
- ThinkPHP第十六天(redirect、join、视图模型)
1.redirect /** * Action跳转(URL重定向) 支持指定模块和延时跳转 * access protected * @param string $url 跳转的URL表达式 * @p ...