思路
1.设置a数组下标来表示优先级,下标越大优先级越高。
例如a[1],a[2],a[3]优先级逐渐增大。
2.优先级的变化,像队列一样,被点击的窗口,优先级变成最大,插到a数组最后面,前面的窗口优先级逐渐减小。
3.优先级的变化(实例)
源代码(C语言)
#include <stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int a[20];
int x1[20],y1[20],x2[20],y2[20];
int c,d;
int i,j,p,q,t,r,temp;
int max,count;
for(i=1;i<=n;i++)
{
scanf("%d %d %d %d",&x1[i],&y1[i],&x2[i],&y2[i]);
a[i]=i;//优先级1,2,3,数字越大优先级越高。
}
for(i=0;i<m;i++)
{
scanf("%d %d",&c,&d);
count=0;
max=0;
for(j=1;j<=n;j++)
{
if(c>=x1[j]&&c<=x2[j]&&d>=y1[j]&&d<=y2[j])//在窗口范围内
{
count++;
for(q=1;q<=n;q++)//找出窗口在哪个优先级
{
if(a[q]==j)
{
t=q;
}
}
if(t>max)//找到优先级最大的
{
max=t;
}
}
}
if(count==0)//不在任何一个窗口范围内
{
printf("IGNORED\n");
}
else
{
printf("%d\n",a[max]);
temp=a[max];
for(p=max;p<n;p++)//其他窗口优先级不变 向前移动
{
a[p]=a[p+1];
}
a[n]=temp;//点击的窗口优先级置顶
}
}
return 0;
}