1.100分代码
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int x1;
int y1;
int x2;
int y2;
int num;//输入时的编号
}Lnode;
int main()
{
int N,M,i,j,x,y,count=0,k,flag=0;
scanf("%d",&N);
scanf("%d",&M);
Lnode lnode[N];//其中每一项的num编号代表输入时的编号,即窗口的编号。而在数组中的顺序代表窗口的由下到上的顺序
Lnode lnodee;//用来记录被点击的窗口
int fruit[M];//输出结果数组,初始为0。最后输出时若为0则输出IGNORED
for(i=0;i<M;i++)
fruit[i]=0;
for(i=0;i<N;i++)//N个窗口
{
scanf("%d",&lnode[i].x1);
scanf("%d",&lnode[i].y1);
scanf("%d",&lnode[i].x2);
scanf("%d",&lnode[i].y2);
lnode[i].num=i+1;
}
for(k=0;k<M;k++)//M次点击
{
flag=0;
scanf("%d",&x);
scanf("%d",&y);
for(i=N-1;i>=0;i--)//从最上层开始检验
{
if((x>=lnode[i].x1&&x<=lnode[i].x2)&&(y>=lnode[i].y1&&y<=lnode[i].y2))
{
printf("%d\n",lnode[i].num);
if(i!=N-1)//若点击到的这个窗口不是最最上面的窗口(即第一层),则将该层上面的窗口依次下移,把该层放在最上面
{
lnodee=lnode[i];
for(j=i;j<=N-2;j++)
{
lnode[j]=lnode[j+1];
}
lnode[N-1]=lnodee;
}
flag=1;
break;
}
}
if(flag==0)
{
printf("IGNORED\n");
}
}
return 0;
}
2.30分代码:关键代码没变,主要修改了一下输出的部分的代码。将结果放入一个数组中统一最后输出,然后就错了。为何?
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int x1;
int y1;
int x2;
int y2;
int num;//输入时的编号
}Lnode;
int main()
{
int N,M,i,j,x,y,count=0,k;
scanf("%d",&N);
scanf("%d",&M);
Lnode lnode[N];//其中每一项的num编号代表输入时的编号,即窗口的编号。而在数组中的顺序代表窗口的由下到上的顺序
Lnode lnodee;//用来记录被点击的窗口
int fruit[M];//输出结果数组,初始为0。最后输出时若为0则输出IGNORED
for(i=0;i<N;i++)//N个窗口
{
scanf("%d",&lnode[i].x1);
scanf("%d",&lnode[i].y1);
scanf("%d",&lnode[i].x2);
scanf("%d",&lnode[i].y2);
lnode[i].num=i+1;
}
for(i=0;i<M;i++)
fruit[i]=0;
for(k=0;k<M;k++)//M次点击
{
scanf("%d",&x);
scanf("%d",&y);
for(i=N-1;i>=0;i--)//从最上层开始检验
{
if((x>=lnode[i].x1&&x<=lnode[i].x2)&&(y>=lnode[i].y1&&y<=lnode[i].y2))
{
fruit[count++]=lnode[i].num;//将点击到的最上层的窗口的编号存入结果数组
if(i!=N-1)//若点击到的这个窗口不是最最上面的窗口(即第一层),则将该层上面的窗口依次下移,把该层放在最上面
{
lnodee=lnode[i];
for(j=i;j<=N-2;j++)
{
lnode[j]=lnode[j+1];
}
lnode[N-1]=lnodee;
}
break;
}
}
}
for(i=0;i<M;i++)//结果表的输出
{
if(i!=M-1)
{
if(fruit[i]!=0)
{
printf("%d\n",fruit[i]);
}else
printf("IGNORED\n");
}else{
if(fruit[i]!=0)
{
printf("%d",fruit[i]);
}else
printf("IGNORED");
}
}
return 0;
}