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 ...
随机推荐
- karma note
karma 简介 karma不是一个测试框架,仅仅是启动了一个httpServer karma仅仅是一个跑测试的平台(runner), 我们可以使用各种测试框架, 如: Jasmine Mocha Q ...
- 解决magento保存产品时耗时很长的问题
以前我在更新产品属性值(拿price为例)的时候,通常会这样做: foreach($product_ids as $id){ $product = Mage::getModel('catalog/pr ...
- 我的 Azure VM 为何会重新启动?
在客户创建的客服案件中, Azure VM意外重启是一个常见的问题,客户要求客服确定重新启动的原因.希望下面的详细说明能够帮助您了解 Azure VM重新启动的原因. WindowsAzure大约 ...
- [C/C++标准库]_[0基础]_[优先队列priority_queue的使用]
std::priority_queue 场景: 1. 对于一个任务队列,任务的优先级由任务的priority属性指明,这时候就须要优先级越高的先运行.而queue并没有排序功能,这时priority_ ...
- c# 获取全屏 中鼠标焦点的位置坐标
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- linux之多进程fork:进程通信
++++++++++++++++++信号机制+++++++++++++++++++ 接收信号 int signal(int sig,__sighandler_t handler); int func( ...
- js实现日期的相加减
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- STL中主要的算法(一)
一.replace() 替换算法将指定元素值替换为新值,使用原型例如以下,将迭代器[first,last)中值为old_value的元素所有替换为new_value值. 函数原型: template ...
- java list基本用法
List<E>([]内的内容可省略),与数组类似: 实例化:List[<数据类型>] list = new ArrayList[<数据类型>](); 获得集合内元素 ...
- 10条PHP编程习惯
过去的几周对我来说是一段相当复杂的经历.我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐 趣.我从来没有被开除过,所以很难不去想得太多.我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人, ...