社团迎新题
初遇ACM社团题
题目简介
猜比分
给定一组比分 如:*
114514 : 191981*让N个人来猜比分
第1个人编号为1
第2个人编号为2
……
第N个人编号为N
找出猜出比分最接近真实比分的编号
Input
每行包含两个整数 以空格分开(范围都在[0~999999]内)
第一行两个整数是CC PJ 的最终比分
从第二行开始的若干行分别是
第1位同学的竞猜结果
第2位同学的竞猜结果
……
第N位同学的竞猜结果
以-1 -1结束输入
Output
一个整数 表示的是竞猜比分最接近真实结果的同学的编号
Sample Input
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56SHELL
1328 1158
500 700
36 38
423 450
100 80
380 80
550 450
735 735
520 680
390 170
1800 800
16 61
61 16
50 48
66 60
800 200
43 29
400 600
900 800
98 98
401 451
350 500
173 184
576 486
113 255
300 275
666 545
275 194
361 258
66 63
98 138
272 243
500 500
257 76
927 826
600 560
100 150
2246 1748
350 300
23 30
300 200
369 396
300 500
436 327
970 630
400 550
400 500
400 500
1000 600
555 333
350 300
2028 1197
777 456
-1 -1Sample Output
1
2SHELL
34
急功近利
首先,这道题并不复杂,甚至可以用简单来形容,基本上是没有什么算法的,只有单纯的选择、赋值与记录,作为一名C语言初学者,相比于平时的练习题,冗长复杂的题目介绍以及输入数据让我开头就上了心态(因为也是班上前几的排名所以比较着急)。也可能是沉迷于网站搭建,脑子里早就把当初对C的理解、逻辑抛在脑后,剩下的就只有焦虑和惊慌失措,写的循环乱七八糟,有些条件甚至是互斥的(真不知道当时脑子是怎么想的),错误…….死循环……
以为需要排序算法还去看了算法的屑换了三种方案,很遗憾都是Wrong Answer
开摆
放弃了,继续美化博客和网上冲浪
梦醒时分
大早上起来军训,站在体育场上被寒风刮被细雨打,一瞬间我理解了宮本浩次
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48C
#include <bits/stdc++.h>
int main()
{
int a,b; //正确比分
int m,n; //每组猜想比分
int c,d; //差
int num=0,truth; //编号以及记录编号
int x=999999,y=999999; //记录最小的差
scanf("%d%d",&a,&b); //第一组数据 正确比分
while(1)
{
scanf("%d%d",&m,&n); //循环输入每组比分
if(m==-1 && n==-1)
break; //满足条件跳出循环
/*作差*/
if(m>=a)
{
c=m-a;
}
if(m<a)
{
c=a-m;
}
if(n>=b)
{
d=n-b;
}
if(n<b)
{
d=b-n;
}
/*顺序记录编号*/
num++;
/*判断是否更新最小差以及输出编号*/
if(c<=x && d<=y)
{
x=c;
y=d;
truth=num;
}
}
/*输出*/
printf ("%d",truth);
return 0;
}总结
我是小丑一定要先分析思路,整理逻辑!!!
此文章版权归shuomc所有,如有转载,请注明来自原作者
评论