CCF 窗口 C语言 201403-2

思路

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;
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值