360校招 求立方體表面積

2021-09-26 05:35:03 字數 1291 閱讀 3305

將長為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...