(栈的应用5.4.4)POJ 3044 City Skyline(本来是想用栈的,后来邪恶的用了数组)

本文提供了一道名为 POJ_3044 的编程题解,该题目要求根据一系列坐标点判断不同楼宇的数量。通过从后向前扫描坐标点并利用标记数组来确定每栋楼宇的起始位置,最终得出楼宇总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * POJ_3044.cpp
 *
 *  Created on: 2013年10月31日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <cstring>

const int maxn = 50010;
int x[maxn];
int y[maxn];
bool use[maxn];


int main(){
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF){
		memset(use,false,sizeof(use));

		int i,j;
		for(i = 0 ; i < n ; ++i){
			scanf("%d%d",&x[i],&y[i]);
		}

		int ans = 0;
		for(i = n - 1 ; i >= 0 ; --i){//从后往前扫
			if(!y[i] || use[i]){
				continue;
			}

			for(j = i - 1 ; j >= 0 ; --j){

				if(y[j] == y[i]){//左邻顶点坐标的高度 == 当前坐标的高度,则证明他们是同一栋楼
					use[j] = true;
				}else if(y[j] < y[i]){//左邻顶点坐标的高度 < 当前顶点坐标的高度,是新的一栋楼的开始
					break;
				}
			}

			ans++;
		}

		printf("%d\n",ans);
	}

	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值