逆向考虑即可解决
#include<iostream>
using namespace std;
const int maxn= 100000 +5;
int a[maxn][4];//0-x,1-y,2-x-length,3-y-length
int main(){
int n,flag=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i][0]>>a[i][1]>>a[i][2]>>a[i][3];
}
int x,y;
cin>>x>>y;
for(int i=n;i>0;i--)
{
if((a[i][0] + a[i][2] >= x) && (a[i][1] + a[i][3] >= y) && (a[i][0] <= x) && (a[i][1] <=y))
{
flag=i;
break;
}
else if(a[i][0]==x && a[i][1]==y)
{
flag=i;
break;
}
}
if(flag!=0) cout<<flag;
else cout<<-1;
return 0;
}
本文介绍了一个简单的逆向查找算法实现,该算法用于在一个预定义的二维数组中从后向前查找符合条件的第一个元素的位置。通过逆向迭代,程序可以高效地找到指定坐标范围内的目标。
3132

被折叠的 条评论
为什么被折叠?



