建築物的輪廓問題

2021-06-19 10:06:20 字數 1764 閱讀 9274

問題描述:描述

對於城市中幾座建築外形,給出這些建築的二維輪廓。

•關於輸入

輸入的第一行是正整數 n(1<= n <=100 000),表示建築的數目。

接下來 n 行,每行三個正整數start end height,表示建築的左邊界、右邊界和高度。

•關於輸出

輸出建築群的輪廓,包含多行,從左到右輸出建築的邊界:(u|d|r) len

u、d、r分別表示上、下、右,即建築邊界延伸的方向,len為正整數,表示邊界在此方向上延伸的長度。

演算法:建築物輪廓合併偽**

r = new line; x = 0; y = 0; pre = -1;

while (p.s < inf || q.s < inf)

if (r.s == q.s)

r.h = (x >= y) ? x : y; // 取較高的輪廓

if (r.h != pre)

}r.s = inf;

建築輪廓問題

以上參考了汪小林 分治法的建築物輪廓問題,歸併排序類似用了分治法。上面演算法有些地方沒有考慮到那樣的細緻

如下我的**:

// 輪廓問題1.cpp : 定義控制台應用程式的入口點。

//// 輪廓.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #define inf 0xffff//表示無窮大

using namespace std;

/*建築物的輪廓問題

author:surpassgood

資料結構:用 node 表示轉折點

*/template class node

node(t x1,t h1)

bool operator

;template ostream& operator << (ostream& os, const node& ob)

else

if(r->x==(*it_2).x)

else

h2=pre_2;

r->h=h1>h2?h1:h2;

if(r->x==(*it_1).x)

++it_1;//注意不能在for只有寫出 it_1++ it_2++

if(r->x==(*it_2).x)

++it_2;

if(r->h!=pre)//和之前的高度不同 要改變高度

}/*後續的調整*/

if((*it_2).x((*it_2).x,(*it_2).h));

it_2++;

} }else if((*it_1).x((*it_1).x,(*it_1).h));

it_1++;

} }else

//最後乙個轉折點為(inf,0)

result.push_back(node(inf,0));

/*列印結果看下*/

vector< node> ::iterator iter;

for (iter = result.begin(); iter != result.end(); ++iter) }

double min(double x,double y)

寫**和寫文章相似,要思路清晰,演算法要搞清楚。越來發現,演算法是關鍵

題解 建築物

題目 有r紅色立方體,g綠色立方體和b藍色立方體。每個立方體的邊長是1。現在有乙個n n的木板,該板被劃分成1 1個單元。現在要把所有的r g b個立方體都放在木板上。立方體必須放置在單元格內,單元格可以豎立放置多個立方體。放置在板上的立方體可以被視為 建築物 乙個 建築物 被稱為 美麗建築物 當且...

建築物牆面建模

通常我們要確定某個規則物體,可以提取相應的幾何特徵,例如乙個球只需提取出球心座標和半徑大小即可唯一確定該球。本次建模物件主要是某大學主樓,每次處理的物件是主樓的一部分,且每一部分可以近似看作矩形。最後將已處理的部分同時用pcd viewer release.exe工具顯示,並將處理後的結果與主樓原始...

rust建築物拆除指令 克拉瑪依拆除建築物

鴻運切割拆除工程 為您詳細解讀cmbtwh克拉瑪依拆除建築物的相關知識與詳情,陳某國的石油化學工業鼓起於20世紀60年代,目前擁有大中型石油化工企業100多個,幾乎遍及全國。那些企業每年為供給大量的石油賣得貨 合成纖維 塑料和化肥,以及一些根本化工本料,為陳某國國民經濟的迅速開展和餬口的改善做出了巨...