• Uva 221 Urban Elevations


    uva 221

    提供个房子的坐标以及房子宽度和高度,要求你求从南边看过去,可以看到的房子有哪些

    PS:一定要注意题目的这句:One blank line must separate output from consecutive input records.不然会直接报错

    可以直接使用暴力做,不过要注意枚举方式,在无序的情况下直接考虑每个房子对正研究的房子的影响显然是不现实的,因为可能有房子刚好当前边一部分,或中间一部分,或后面一部分,这个不好统一,所以事先排序能明确统计

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #define M(a) memset(a,0,sizeof(a))
    using namespace std;
    
    struct house
    {
        int id,x,y,w,d,h,vis;
        bool operator < (const house & a) const
        {
            if(x!=a.x)
                return x<a.x;
            return y<a.y;
        }
    }eve[111];
    
    int main()
    {
        int n;int ca=1;
        while(cin>>n,n!=0)
        {
            if(ca-1) cout<<"
    ";
            M(eve);
            for(int i=0;i<n;i++)
            {
                cin>>eve[i].x>>eve[i].y>>eve[i].w>>eve[i].d>>eve[i].h;
                eve[i].id=i+1;
            }
            sort(eve,eve+n);
            for(int i=0;i<n;i++)
            {
                int tem=eve[i].x;
                for(int j=0;j<n;j++)
                {
                    if(eve[j].y>=eve[i].y) continue;
                    if(eve[j].x>eve[i].x+eve[i].w) continue;
                    if(eve[j].x+eve[j].w<eve[i].x) continue;
                    if(eve[j].h<eve[i].h) continue;
                    if(eve[j].x>tem) {continue;}
                    tem=max(tem,eve[j].x+eve[j].w);
                }
                if(tem>=eve[i].x+eve[i].w) eve[i].vis=1;
            }
            printf("For map #%d, the visible buildings are numbered as follows:
    ",ca++);
            int first=0;
            for(int i=0;i<n;i++)
            {
                if(eve[i].vis) continue;
                if(first++) cout<<" ";
                cout<<eve[i].id;
            }
            puts("");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    c#中MessageBox的使用(转)
    ArcGIS中地图配准(转)
    VS2010中VC9.0Runtime与VC10.0Runtime在win7上装不上提示error code 1603(转)
    win7下安装Oracle 10G 的成功方法
    解决win 7 下打不开chm格式文件的办法
    vi 编辑器
    开源赚钱思路
    如何开始linux 编程
    Linux C语言开发基础
    如何做开源项目——ABC
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/4969295.html
Copyright © 2020-2023  润新知