CCF 201403-2 窗口

简介: CCF 201403-2 窗口

1. 问题描述

2. 解题思路

typedef struct {  // 矩形窗口类
    int x1;
    int y1;
    int x2;
    int y2;
    int index; // 矩形窗口的编号
} Rectangle;

利用结构体数组存储窗口的排序情况,按照顺序最底下的窗口位于数组下标最小的位置(rect[0]),最顶上的窗口位于数组下标最大的位置(rect[n-1])

每次鼠标点击时,按照窗口从上到下的顺序依次判断鼠标是否落入窗口内,若是,则输出窗口编号,并且窗口排序情况重新排序,被点中的窗口移到最顶上(顺序表的位置改变),其他顺序不变。否则继续往下遍历。最后如果都没有窗口命中,则输出 IGNORED


画出样例中的窗口排列如下:


点击(1, 1) 的时候鼠标落在二号窗口上,并且二号窗口会移动到最上层如下:

然后下层是三号,最下层是1号窗口

点击(0, 0) 的时候鼠标落在一号窗口,并一号窗口移动到最前边

这时点击(4, 4) 依旧落在一号窗口,一号窗口保持最前。

点击(0, 5)未命中任何窗口,输出 IGNORED


3. 代码实现

#include<iostream>
using namespace std;
#define MAX_N 15
#define MAX_M 15
typedef struct {  // 矩形窗口类
    int x1;
    int y1;
    int x2;
    int y2;
    int index; // 矩形窗口的编号
} Rectangle;
Rectangle rect[MAX_N];
int n, m;
int x, y;
int flag = 0;
int main() {
    cin>>n>>m;
    // 将所有窗口存入一个数组,下标小的表示在最底层,下标大的表示在顶层
    for (int i = 0;i < n;i++) {
        cin>>rect[i].x1>>rect[i].y1>>rect[i].x2>>rect[i].y2;
        rect[i].index = i+1;
    }
    for (int i = 0;i < m;i++) {
        flag = 0;
        cin>>x>>y;
        for (int j = n-1;j >= 0;j--) {  // 倒着遍历窗口数组,因为窗口数组下表越大,窗口排列越靠上。
            // 判断点是否在窗口内
            if ( x >= rect[j].x1 && x<= rect[j].x2 && y >= rect[j].y1 && y <= rect[j].y2 ) {
                flag = 1;
                cout<<rect[j].index<<endl;
                // 在这里,如果该点点中了某个窗口,那么这个窗口就要排到最前面
                Rectangle temp;
                temp = rect[j];
                for (int k = j+1;k < n;k++) {
                    rect[k-1] = rect[k];
                }
                rect[n-1] = temp;
                break;
            }
        }
        if (!flag) {
            cout<<"IGNORED"<<endl;
        }
    }
    return 0;
}
相关文章
|
算法 机器人
算法练习题(五)——机器人走方格
算法练习题(五)——机器人走方格
|
2天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1292 1
|
9天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
698 4
|
2天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
544 2
|
3天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
2天前
|
存储 弹性计算 安全
阿里云服务器4核8G收费标准和活动价格参考:u2a实例898.20元起,计算型c9a3459.05元起
现在租用阿里云服务器4核8G价格是多少?具体价格及配置详情如下:云服务器ECS通用算力型u2a实例,配备4核8G配置、1M带宽及40G ESSD云盘(作为系统盘),其活动价格为898.20元/1年起;此外,ECS计算型c9a实例4核8G配置搭配20G ESSD云盘,活动价格为3459.05元/1年起。在阿里云的当前活动中,4核8G云服务器提供了多种实例规格供用户选择,不同实例规格及带宽的组合将带来不同的优惠价格。本文为大家解析阿里云服务器4核8G配置的实例规格收费标准与最新活动价格情况,以供参考。
234 150