2019.1.16HDOJ-2078复习时间,通过率78.28%

我还以为能很快做出来呢……
看来还是理解能力差啊……

题目

Problem-2078
Problem Description
为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?

Input
输入数据的第一行是一个数据T,表示有T组数据。
每组数据的第一行是两个整数n(1 <= n <= 40),m(1 <= m <= n)。
接着有n行,每行有一个正整数a(1 <= a <= 100),表示这门课的难度值。

Output
对于每组输入数据,输出一个整数,表示最高效率值。

Sample Input
2
2 2
52
25
12 5
89
64
6
43
56
72
92
23
20
22
37
31

Sample Output
5625
8836

一波三折的做题过程

第一遍做出的错误代码

#include<stdio.h>
int main(void)
{
	int T,n,m,efficiency;//T组数据,n门课,最多学m门
	scanf("%d",&T);
	while(T-->0){
		int a[39],i,min,c;//min为数组中最小的 
		for(i=0;i<40;i++)
		scanf("%d",&a[i]);
		min=a[0];
		int b;
		for(b=0;b<40;b++){
			if(min>a[b])
			min=a[b];
		}
		efficiency=(100-a[1])*(100-a[1]);
		c=(a[1]-min)*(a[1]-min);
		if(efficiency<c)
		efficiency=c;
		printf("%d",efficiency);
	}
	return 0;
 } 

开始以为给的第一个a值是他的必做科目,之后再从里面挑最简单的科目来计算效率,并与第一个效率进行比较……
发现这样m并没有什么用……
而且n是变量,不一定为20,毛病太多,懒得修改了
其实使用数组也不是不可以,控制好循环次数就行了……
自认为是理解错误,没有提交,重新敲了别的代码

第二版敲出的代码

#include<stdio.h>
int main(void)
{
   int T,n,m;//T组数据,n门课,学m门
   scanf("%d",&T);
   while(T-->0){
   	scanf("%d %d",&n,&m);
   	int efficiency,eff2,a1,a2;//a1为当前课程难度,a2为下一课程难度 
   	const initial=100;
   	scanf("%d",&a1);
   	efficiency=(initial-a1)*(initial-a1);
   	while(n-->1&&m>1){
   		scanf("%d",&a2);
   		if(a2<a1){
   		eff2=(a1-a2)*(a1-a2);
   		m--;
   		a1=a2;
   		}
   		if(eff2>efficiency)
   		efficiency=eff2;
   	}
   	printf("%d",efficiency);
   } 
   return 0;
}

第二版,还是认为a1为必做,之后按顺序比较难度,挨个进行计算,敲完代码后发现output与sample不符,用计算器算了一下,发现这题就是就是寻找一组数里的最小值啊(╯‵□′)╯炸弹!•••*~●

先去吃个饭,回来敲第三版

#include<stdio.h>
int main(void)
{
	int T,n,m;//T组数据,n门课,学m门
	scanf("%d",&T);
	while(T-->0){
		scanf("%d %d",&n,&m);
		int efficiency,a1,a2;//a1为当前课程难度,a2为下一课程难度 
		const initial=100;
		scanf("%d",&a1);
		while(n-->1){
			scanf("%d",&a2);
			if(a2<a1){
			a1=a2;
			}
		}
		efficiency=(initial-a1)*(initial-a1);
		printf("%d\n",efficiency);
	} 
	return 0;
}

5分半看题,16分钟敲第一版,18分01秒敲第二版……
吃完饭花了2分36秒把第二版改成第三版,又花了3分05秒调试,终于AC了……
我又成为分母了……
大佬们都在讲什么贪心算法,听不懂╥﹏╥…

2019年1月16日17点36分
2019年1月16日18点48分 添加了Debug后的第三版代码

你可能感兴趣的:(OJ上的做题经验)