將長為n*m的矩形劃分為n行m列(每行列寬度均為1),在第i行j列 a(i,j)位置上放邊長為1的正方體( 1<=a(i,j)<=100),所有正方體組成乙個立方體。
每個正方體的六個麵中的一部分會被其他部分正方體遮擋,未被遮擋的部分總面積即為該立方體的表面積,求表面積大小?
輸入:第一行兩個正整數 n 和m, 1<= n, m<= 1000;
輸出:表面積大小
示例輸入:
2 22 1
1 1輸出: 20
原理是單獨計算每一層的表面積,再求和
推導過程是:
1.總表面積 = 第一層表面積 + 第二層 + ......+頂層表面積
2.第一層表面積 = 四周所佔面積(2*(m+n))+上下所佔面積(2*m*n - 第二層正方體個數)
第二層表面積 = 四周所佔面積(第二層周長) + 上下所佔面積(第二層個數 - 第三層個數)
第三層表面積 = 四周所佔面積(第三層周長) + 上下所佔面積(第三層個數 - 第四層個數)
依次後推。。。
頂層面積 = 四周所佔面積(頂層周長) + 上下所佔面積(頂層個數)
3.將2中推導過程相加,上下面積全部相互抵消,得到結果
總表面積 = 2*(m+n)+2*m*n + 第二層周長 + 第三層周長 + ......+頂層周長
### 實現**
public static void main(string args) //每一層個數}}
sum += islandperimeter(temp);//計算每一層周長
if(islandperimeter(temp) == 0)//最後一層,停止迴圈
}system.out.println(2*(m+n)+2*m*n+sum); }
// 計算每一層周長
public static int islandperimeter(int grid)
if(j -1 <0 || grid[i][j - 1] == 0)
if(j + 1 >= grid[i].length || grid[i][j + 1] == 0)}}
}return count;
}
測試結果
四校聯考 立方體
題目描述 你有乙個揹包,你要往裡面塞一些立方體。每次,在保證揹包裡所有立方體的體積和不超過揹包容量的前提下,你會選擇乙個邊長為整數且盡可能大的立方體塞進揹包裡。揹包的容量為 1,n 中的整數,你想知道你最多能拿到多少個立方體,以及在此前提下,揹包容量的最小值和最大值。輸入資料 一行乙個整數n。輸出資...
資料立方體
總體介紹 首先模擬乙個資料分析場景,某企業積累了如下 所示的銷售資料 中每一行表示某個時間段內某種商品在某個地區的銷售情況。很明顯,這些資料涉及到了時間 地區 產品三個業務角度。在對這樣的資料進行分析時,不同的角色都會基於自己所感興趣的業務角度提出問題 銷售經理關心各個地區的銷售情況,希望找出銷售增...
建立立方體
imanualobject cube cube scenemgr.createmanualobject cube cube.begin examples anchor operationtype.ot list 頂點 cube.position 100,100,100 0 cube.position...