1. 程式人生 > >892. 三維形體的表面積

892. 三維形體的表面積

分析:主要注意v = 0時引起周邊表面積的變化

class Solution {
public:
    int surfaceArea(vector<vector<int>>& grid) {
        int area = 0;
        //up/down
        for(int i = 0; i < grid.size(); i++) {
           for(int j = 0; j < grid[0].size(); j++) {
                if(grid[i][j] > 0) area += 2; //v為0的沒有表面積
           }
        }
        // cout << area << '\n';
        //left/right
        for(int j = 0; j < grid[0].size(); j++) {
            for(int i = 0; i < grid.size(); i++) {
                if(grid[i][j]) {
                    if(i == 0 || grid[i-1][j] == 0)  //最左邊或左邊為空
                        area += grid[i][j];
                    else area += abs(grid[i-1][j]-grid[i][j]); //相鄰面積之差
                }
                else if(i && grid[i-1][j])  //當前為0但前左邊一個不為0
                    area += grid[i-1][j];
            }
            if(grid[grid.size()-1][j]) area += grid[grid.size()-1][j]; //最右邊的側面
        }
        // cout << area << '\n'; 
        //front/back
        for(int i = 0; i < grid.size(); i++) {
            for(int j = 0; j < grid[0].size(); j++) {
                if(grid[i][j]) {
                    if(j == 0 || grid[i][j-1] == 0)  //最前邊或前邊為空
                        area += grid[i][j];
                    else area += abs(grid[i][j-1]-grid[i][j]); //相鄰面積之差
                }
                else if(j && grid[i][j-1])  //當前為0但前一個不為0
                    area += grid[i][j-1];
            }
            if(grid[i][grid[0].size()-1]) area += grid[i][grid[0].size()-1]; //最後邊的側面
        }
        // cout << area << '\n'; 
        return area;
    }
};

相關推薦

【Leetcode】892. 形體表面積

題目描述: 在 N * N 的網格上,我們放置一些 1 * 1 * 1  的立方體。 每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j)&n

leetcode 892 形體表面積

思路和官網提供的一致 程式碼(粗糙,沒有用到庫裡的函式,if else太多,暫時沒有找到好的改進方法,因為方塊是不是在邊界必須得要去判斷) class Solution { public:     int surfaceArea(vector<vector<i

892. 形體表面積

分析:主要注意v = 0時引起周邊表面積的變化 class Solution { public: int surfaceArea(vector<vector<int>>& grid) { int area

leetcode 892. 形體表面積

輸出 size ace pro 描述 pre bubuko grid str 題目描述: 在 N * N 的網格上,我們放置一些 1 * 1 * 1 的立方體。 每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上。 返回最終形體的

883. 形體投影面積

在 N * N 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 * 1 * 1 立方體。 每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上。 現在,我們檢視這些立方體在 xy、yz 和 zx 平面上的投影。 投影就像影子,將

【Leetcode】883. 形體投影面積

題目描述: 在 N * N 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 * 1 * 1 立方體。 每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上。 現在,我們檢視這些立方體在 xy、yz 和 zx 平面上的投影。 投

LeetCode883. Projection Area of 3D Shapes( 形體投影面積) JAVA實現

On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes. Each value v = grid[i][j] represents a to

Windows Phone開發(19):透視效果

end 理論知識 form 之間 3d模型 中間 第一個 一個 好的 三維效果也可以叫透視效果,所以,我幹脆叫三維透視效果。理論知識少講,直接用例開場吧,因為這個三維效果其實很簡單,比上一節中的變換更省事,不信?一起來做一做練習吧。 練習一:把對象沿Y軸旋轉45度。 默認情

Bubble圖形引擎簡介

模塊 images c++編寫 sdl2 支持 ima 包括 .com glsl Bubble是一款基於OpenGL的3D圖形引擎,主要使用C++編寫,采用CMake構建工具構建,基於OpenGL可編程管線,支持GLSL著色器語言。這是一個用於學習和實踐的項目,目前尚在開發

【WPF】模型中的“照相機”

聲明 mesh 妹子 .com 看到了 指向 世界 png per WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側重點還是在應用開發上,雖然也有些遊戲是用 WPF 開發的,不過,老周想啊,如果真要開發遊戲,最好用專門的框架,WPF 應當用於開發應用功能的。不

HDU1253-勝利大逃亡 (BFS)

魔王 panel 能夠 出差 成功 註意 define can p s 題目傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=1253 勝利大逃亡 Time Limit:4000/2000MS(Java/Others)Memor

真實地形建模

bsp utm 文件導入 等高線 img help 註意 configure cti ujust4fun 整理 1.國內的地理數據信息雲http://www.gscloud.cn/,國外Google earth+科學上網。下載高程DEM數據,下載衛星地形圖可用於後期貼圖

【WPF】用三角形網格構建圖形

遊戲 輸入 angle 結構 dash bsp 來看 適應 鼠標 雖然WPF只能支持部分三維模型,不過從應用功能開發的角度看,也已經夠用了(非遊戲開發)。WPF 的三維圖形,說得簡單一點,也就兩種而已。 1、把二維對象放到三維空間中,這個應該較為好辦,像 Image 控件

[計算機圖形學 with OpenGL] Chapter10 OpenGL觀察程序示例

chap 而不是 max argv func open position style windows   10.10節書中給出了一個程序示例,有一個填充正方形,從側面的角度觀察並畫到屏幕上。   圖0   這裏進一步畫出一個立方體,將相機放入立方體中心,旋轉相機,達到在

POJ 2251:Dungeon Master(BFS)

ota span pla south integer gen i++ break align Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16

360度全景展示 帶來立體的感覺

酷雷曼 隨著網絡科技信息的突飛猛進發展,網上訂餐、360度看房。看車 訂酒店、等等,讓消費者足不出戶就能實現商品購買。如何給消費者提供更直觀的商品展示呢?近日,酷雷曼研發的一款360度全景瀏覽軟件,能夠使微信用戶實現360度全景看圖,對企業來說,這種非凡體驗能提高消費者的購買欲。 橡膠谷3

全景圖像源自對真實場景的攝影捕捉

酷雷曼 360全景制作技術是目前全球範圍內迅速發展並逐步流行的一種視覺新技術。全景技術給人們帶來全新的真實現場感和交互式的感受。它可廣泛應用於三維電子商務,如在線的房地產樓盤展示、虛擬旅遊解決方案、虛擬教育等領域。 首微營銷采用魚眼鏡頭拍攝的照片視角可達到180度,在1米的距離以上,景深可達無

企業的全景展示不再是奢侈的幻想

酷雷曼 360全景展示的產品有很大程度的經驗,以提高通過拖動鼠標的高清晰度顯示的作用,不僅從多角度功能,消費者看到商品的細節,更重要的是,全景顯示,可達到商品化的整個過程和結構。據業內人士透露,顯示技術還沒有被廣泛使用主要是由於兩個因素。 首先,在文章中拍攝,360全景展示的對象全景多角度的生

酷雷曼360全景展示系統具有哪些優勢

酷雷曼360全景拍攝給人一種前所未有的瀏覽體驗,讓你足不出戶就能身臨其境的感受到現場的環境。360全景攝影其實是利用相機環拍360°所得的一組照片,再通過專業軟件無縫處理拼接所得的一張全景圖像,然後采用flash技術制作為swf格式的圖像。該圖像可以用鼠標隨意上下、左右、前後拖動觀看,亦可以通過鼠標滾輪

HDU - 3584 Cube (樹狀數組 + 區間改動 + 單點求值)

btn either -o mem 求值 popu -s onos column HDU - 3584 Cube Time Limit: 1000MS Memory Limit: 65536KB 64bit IO