有些题解的方法把这道题搞得有些复杂。我们可以简化一下简单来说就是投机取巧。因为,这道题就是要看指定的地方有没有覆盖地毯,如过有的话就输出,没有的话就照题干输出-1就好了。
总而言之就是看我下面的代码吧
1 #include<cstdio> 2 #include<cstdlib> 3 using namespace std; 4 int main() 5 { 6 int n,a[10005],b[10005],g[10005],k[10005],x,y; 7 scanf("%d",&n); 8 for(int i=1;i<=n;++i) 9 scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]); 10 //输入铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y轴方向的长度 11 scanf("%d%d",&x,&y); 12 for(int i=n;i>=1;--i) //找最上面覆盖的地毯,所以从上往下找 13 if(x>=a[i]&&x<=a[i]+g[i]&&y>=b[i]&&y<=b[i]+k[i]) 14 { 15 printf("%d\n",i); 16 exit(0); //找到覆盖的,输出,结束 17 } 18 printf("-1\n"); //没找到,输出-1 19 return 0; 20 }