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 ...
随机推荐
- Delphi内存操作API函数(备查,并一一学习)
Delphi内存操作API函数System.IsMemoryManagerSet;System.Move;System.New;System.ReallocMem;System.ReallocMemo ...
- Springmvc+Spring+Hibernate搭建方法及实例
Springmvc+Spring+Hibernate搭建方法及实例
- Android TextView 实现文字大小不同和文字颜色不同
效果图如下: 关键代码如下: StringBuffer sb = new StringBuffer(); if(day > 0) { sb.append("<a href=\&q ...
- 标准C函数库的使用方法
本篇介绍若干经常使用的标准C函数的使用方法,主要介绍stdio(标准输入输出).math(数字函数库).time(时间函数库).stdlib(标准函数库)string(标准字符串函数)等. 最后更新 ...
- entity framework 中一些常用的函数 转自http://www.cnblogs.com/williamzhu/
一般查询 var Courses = db.Courses.Where(c => c.Title == "Physics").OrderBy(c => c.Title) ...
- webservice主流框架Axis、Axis2、XFire、CXF的比较
http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...
- //相当于深拷贝一份dataArray。这样才不会改变dataArray本身的值
//相当于深拷贝一份dataArray.这样才不会改变dataArray本身的值 NSMutableArray* commitDataArray = [NSKeyedUnarchiver unarch ...
- ASP.NET关于Eval的值
ASP.NET邦定数据“<%#Eval("Sex")%>”运用三元运算符: <%#(Eval(") ? "男" : "女& ...
- C# - 通过自定义注解反射生成SQL语句[转]
转自http://blog.163.com/jong_cai/blog/static/87028045200902033553581/ -------------------------------- ...
- spark学习
大数据学习纲要,主要针对spark的相关知识的学习,后续会涉及其他大数据相关框架及语言. 1 spark入门: 2.spark 实战部分 3.spark源码解析