【CSP试题回顾】201403-2-窗口

2024-03-05 03:28
文章标签 csp 回顾 窗口 试题 201403

本文主要是介绍【CSP试题回顾】201403-2-窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CSP-201403-2-窗口

解题思路

  1. 窗口存储结构:首先,使用一个结构体MyWindow来存储每个窗口的信息,包括窗口的序号(index)和矩形区域的四个顶点坐标(x1, y1, x2, y2)。所有窗口的信息存储在一个向量windowList中。

  2. 输入处理:程序首先接收两个输入值N和M,N表示窗口的数量,M表示点击的数量。接着,程序通过循环读取每个窗口的坐标,并将它们添加到windowList向量中。之后,程序通过另一个循环读取每次点击的坐标。

  3. 点击事件处理:对于每个点击事件,程序从最后一个添加到windowList中的窗口开始逆序遍历,这样可以首先检查最上层的窗口。如果点击的点位于某个窗口的范围内,程序输出该窗口的序号,并将这个窗口移动到向量的末尾,表示这个窗口被移动到了所有窗口的最上层。如果点击的点不在任何窗口的范围内,程序输出“IGNORED”。

  4. 更新窗口顺序(重要):当一个窗口因为点击而被选中时,它会被从列表中移除(删除原有窗口),然后添加到列表的末尾(置于顶层)。这样确保了如果再有点击事件,最新被点击的窗口将会是第一个被检查的。

完整代码

#include <iostream>
#include <vector>
using namespace std;struct MyWindow
{int index;int x1, y1, x2, y2;
};
int N, M;
vector<MyWindow>windowList;int main() {ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> N >> M;// 输入窗口for (int i = 0; i < N; i++){MyWindow t;t.index = i + 1;cin >> t.x1 >> t.y1 >> t.x2 >> t.y2;windowList.push_back(t);}// 输入鼠标点击记录for (int i = 0; i < M; i++){int x, y;cin >> x >> y;bool isFind = 0; // 标记是否找到点击窗口 1-找到// 倒序遍历windowList(先找到序号最大的窗口即最顶部的窗口)for (int j = windowList.size() - 1; j >= 0; j--){// 鼠标点击在该窗口内if (windowList[j].x1 <= x && x <= windowList[j].x2&& windowList[j].y1 <= y && y <= windowList[j].y2){cout << windowList[j].index << endl;isFind = 1;MyWindow t = windowList[j];windowList.erase(windowList.begin() + j); // 删除原有窗口windowList.push_back(t); // 置于顶层break;}	}if (isFind == 0){cout << "IGNORED\n";}}return 0;
}

请添加图片描述

这篇关于【CSP试题回顾】201403-2-窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775182

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

Java基础回顾系列-第二天-面向对象编程

面向对象编程 Java类核心开发结构面向对象封装继承多态 抽象类abstract接口interface抽象类与接口的区别深入分析类与对象内存分析 继承extends重写(Override)与重载(Overload)重写(Override)重载(Overload)重写与重载之间的区别总结 this关键字static关键字static变量static方法static代码块 代码块String类特

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava

Java基础回顾系列-第九天-数据库编程

Java基础回顾系列-第九天-数据库编程 数据库简介工具包java.sql API 内容与数据库建立连接执行SQL语句数据库检索和更新查询结果SQL类型对应Java类型映射元数据异常 API方法DriverManagerConnectionStatementPreparedStatementCallableStatementResultSetjava.sql.Date批处理、存储过程、事务

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe