麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

201403-2

2019-11-14 08:51:58
字體:
來源:轉載
供稿:網友
問題描述

試題編號:201403-2
試題名稱:窗口
時間限制:1.0s
內存限制:256.0MB
問題描述:問題描述  在某圖形操作系統中,有 N 個窗口,每個窗口都是一個兩邊與坐標軸分別平行的矩形區域。窗口的邊界上的點也屬于該窗口。窗口之間有層次的區別,在多于一個窗口重疊的區域里,只會顯示位于頂層的窗口里的內容。  當你點擊屏幕上一個點的時候,你就選擇了處于被點擊位置的最頂層窗口,并且這個窗口就會被移到所有窗口的最頂層,而剩余的窗口的層次順序不變。如果你點擊的位置不屬于任何窗口,則系統會忽略你這次點擊。  現在我們希望你寫一個程序模擬點擊窗口的過程。輸入格式  輸入的第一行有兩個正整數,即 N 和 M。(1 ≤ N ≤ 10,1 ≤ M ≤ 10)  接下來 N 行按照從最下層到最頂層的順序給出 N 個窗口的位置。 每行包含四個非負整數 x1, y1, x2, y2,表示該窗口的一對頂點坐標分別為 (x1, y1) 和 (x2, y2)。保證 x1 < x2,y1 2。  接下來 M 行每行包含兩個非負整數 x, y,表示一次鼠標點擊的坐標。  題目中涉及到的所有點和矩形的頂點的 x, y 坐標分別不超過 2559 和  1439。輸出格式  輸出包括 M 行,每一行表示一次鼠標點擊的結果。如果該次鼠標點擊選擇了一個窗口,則輸出這個窗口的編號(窗口按照輸入中的順序從 1 編號到 N);如果沒有,則輸出"IGNORED"(不含雙引號)。樣例輸入3 40 0 4 41 1 5 52 2 6 61 10 04 40 5樣例輸出211IGNORED樣例說明  第一次點擊的位置同時屬于第 1 和第 2 個窗口,但是由于第 2 個窗口在上面,它被選擇并且被置于頂層。  第二次點擊的位置只屬于第 1 個窗口,因此該次點擊選擇了此窗口并將其置于頂層。現在的三個窗口的層次關系與初始狀態恰好相反了。  第三次點擊的位置同時屬于三個窗口的范圍,但是由于現在第 1 個窗口處于頂層,它被選擇。  最后點擊的 (0, 5) 不屬于任何窗口。
問題分析:

問題的關鍵是創建窗口的結構體后怎么表示窗口的順序。這里是用一個數組來表示窗口的順序,對應的數組的值為窗口的編號。數組的下標越小,對應的編號窗口越靠前。

代碼:

#include <iostream>using namespace std;/* run this PRogram using the console pauser or add your own getch, system("pause") or input loop */int n,m;  //n個窗口 m個點擊事件 struct window{int winfo; //窗口的編號 int x1,y1,x2,y2;};struct click{int x,y;};window w[12];click c[11];int order[11]; //紀錄窗口順序的數組 string ans[11];int length=0; int main(int argc, char *argv[]) {while(cin>>n>>m){//輸入n個窗口   for(int i=1;i<=n;i++){int tx1,ty1,tx2,ty2;cin>>tx1>>ty1>>tx2>>ty2;w[i].x1=tx1;w[i].y1=ty1;w[i].x2=tx2;w[i].y2=ty2;w[i].winfo =i;}//初始化窗口順序的數組orderfor(int i=0;i<n;i++){order[i]=n-i;  //order[i]的值為對應窗口的編號 i越小對應窗口的越靠前 //i == 0 窗口編號 2  既2號窗口在最前 } //輸入m個鼠標點擊次數for(int i=0;i<m;i++){int tx,ty;cin>>tx>>ty;c[i].x=tx;c[i].y=ty;}//判斷m次點擊事件for(int i=0;i<m;i++){int winio=-1;//從窗口最上層開始判斷 int j;for(j=0;j<n;j++){ int temp_w=order[j];  //獲得當前最靠上的窗口的編號  if((c[i].x <= w[temp_w].x2 && c[i].x >= w[temp_w].x1) &&  (c[i].y <= w[temp_w].y2 && c[i].y >= w[temp_w].y1)) {//i次點擊到了這個窗口 //1.紀錄其窗口號 winio=temp_w;//cout<<temp_w<<endl;//2.將此窗口移動到最前 for(int p=j;p>0;p--) //要從后開始移動 保證前面的數據不被覆蓋 {order[p]=order[p-1];}order[0]=temp_w;break;  }else{//i次點擊沒有點到此窗口 判斷下一個窗口 } }if(winio == -1){cout<<"IGNORED"<<endl;}else{cout<<winio<<endl;}}}return 0;}注意:在移動數組時,需要從被替代的位置開始移動,防止有效信息被覆蓋。


上一篇:java異常分類

下一篇:1036. Boys vs Girls (25)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人在线观看免费网站 | 精品久久久久久久久久久久久久久久久久久 | 四季久久免费一区二区三区四区 | 亚洲性视频 | 国产1区2区3区中文字幕 | 日韩精品一二三 | 日日草夜夜操 | 国产一区二区精品91 | 欧美国产成人在线 | 国产精品wwww | 免费试看av | 精品久久久久久中文字幕 | 羞羞电影在线观看www | 国产精品jk白丝蜜臀av软件 | 亚洲成人免费网站 | 女人裸体让男人桶全过程 | 欧美va亚洲 | 欧美中文字幕在线视频 | 久久精品国产一区二区 | 亚洲爱爱网站 | 亚洲天堂在线电影 | 精品国产一区二区三区在线观看 | 国产精品视频专区 | 国产在线精品一区二区夜色 | 国产成人高清在线观看 | 91在线精品亚洲一区二区 | 亚洲综合视频在线播放 | av成人在线免费观看 | 主播粉嫩国产在线精品 | 久久精品毛片 | 久久综合精品视频 | 51色视频 | 日本欧美一区二区三区视频麻豆 | av电影在线观看免费 | 成年人视频在线免费播放 | 免费看日韩片 | 久久精品久久久久 | 91在线免费观看 | 一本色道久久99精品综合蜜臀 | 亚洲第一男人天堂 | 亚洲成人免费视频在线 |