快捷搜索:  汽车  科技

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)输出共 11 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出 -1。第 n 2n 2 行包含两个正整数 xx 和 yy,表示所求的地面的点的坐标 (x y)(x y)。输入共 n 2n 2 行。第一行,一个整数 nn,表示总共有 nn 张地毯。接下来的 nn 行中,第 i 1i 1 行表示编号 ii 的地毯的信息,包含四个正整数 a b g ka b g k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a b)(a b) 以及地毯在 xx 轴和 yy 轴方向的长度。

停课不停学期间,有没有帮助家人做家务啊。今天,我们带来一道真题也和劳动有关。大家看电视有没有看到走红毯的,那你知道如何铺这些红地毯吗?如何用编程来解决这样的问题吗?

我们来看这样一道题:

题目描述

为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 nn 张地毯,编号从 11 到 nn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

输入格式

输入共 n 2n 2 行。

第一行,一个整数 nn,表示总共有 nn 张地毯。

接下来的 nn 行中,第 i 1i 1 行表示编号 ii 的地毯的信息,包含四个正整数 a b g ka b g k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a b)(a b) 以及地毯在 xx 轴和 yy 轴方向的长度。

第 n 2n 2 行包含两个正整数 xx 和 yy,表示所求的地面的点的坐标 (x y)(x y)。

输出格式

输出共 11 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出 -1。

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(1)

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(2)

相信题目大家已经仔细阅读过了,那么如何用C 编程来解决此类问题呢?

看这里:

include<iostream>using namespace std;//地毯在地面的位置数据 struct carpetInf{ int startX; int startY; int xLen; int yLen;}; carpetInf carpet[10000];int main(){ //地毯数目 int n; cin>>n; //获取地毯数据 for(int i=0; i<n; i ){ cin>>carpet[i].startX \ >>carpet[i].startY \ >>carpet[i].xLen \ >>carpet[i].yLen; \ } //需要检查的位置 int x y; cin>>x>>y; //覆盖检查位置的地毯编号,最开始未覆盖 int carpetNum = -1; //铺地毯 for(int i=0; i<n; i ){ //计算地毯覆盖区域 int startX = carpet[i].startX; int endX = carpet[i].startX carpet[i].xLen; int startY = carpet[i].startY; int endY = carpet[i].startY carpet[i].yLen; if(x>=startX && x<=endX && y>=startY && y<=endY){ //地毯覆盖检查点,更新为最上面的地毯编号 carpetNum = i 1; } } //输出结果 cout<<carpetNum; return 0;}

我们来按照题目要求输入测试数据看看结果:

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(3)

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(4)

符合测试样例要求。说明程序是正确的。

我们回头来看一下程序:我们发现这道题的解题关键在于数组、for循环的知识。上篇文章也是一道真题也是用这样的思路来解题的。可以看到这部分知识是相当重要的。不论是普及组还是提高组均有此题。

在线学编程就找智慧猿。我们一直致力于孩子的成长,陪伴孩子的编程之路。我们的公众号最有温度。都是干货。我们的课程,用孩子们生活中常见的事例来讲解编程知识。零基础,绝对听得懂学得会,最后还可以达到自主编程。

智慧猿少儿编程课堂教研团队老师研究了历年信息学奥赛NOIPC 在基础语法知识方面的考点,特推出此课程。从基本概念引入,到案例详解再到题目解析。为学子们答疑解惑。停课不停学期间,课程促销。套课159课时,24章,包括了信息学奥赛NOIP中涉及到的全部C 语法知识,分支、循环、函数、字符串、数组,等等仅需199。当然你也可以针对自己要重点提升的内容。选择单课。比如:

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(5)

这样高性价比的课,如何购买呢?扫码直达:(特价还有3天结束,抓住机会哦)

编程noip竞赛真题(编程-真题解析-2011提高组-铺地毯)(6)

猜您喜欢: