能不能用栈解决这道题目呢
查看原帖
能不能用栈解决这道题目呢
747885
chararara楼主2023/10/7 19:06

想了一下,参考了ai的思路用栈实现这个题目.先将所有的地毯压入栈,然后出栈判断(x,y)是否在出栈地毯范围内,找到的第一张就是top,就return;但是为什么还有一个样例过不了呢?

#include<iostream>
#include<stack>
using namespace std;

//地毯属性
stuct CP{
    int x1,y1,x2,y2,id;
};


int main()
{
    int n;
    cin>>n;
    int ans = 0;
    
    stack<CP> cp;
    
    for(int i = 1;i<=n;i++){
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        //地毯id递增 - 结构体输入数据
        CP.push({x1,y1,x2,y2,i});
    }
    
    int x,y;
    cin>>x>>y;
    
    while(!CP.empty()){
        CP top1 = cp.top();
        cp.pop();
        if(x>top1.x1&&x<top1.x2&&y>top1.y1&&y<top1.y2){
            ans = top1.id;
            break;
        }
    }
    
    if(ans>0) cout<<ans;
    else cout<<"-1"<<endl;
    return 0;
}

不太理解emmmm

2023/10/7 19:06
加载中...