//============================================================================
// Name : 1374.cpp
// Author : FnLock
// Version :
// Copyright : 木有版权
// Description : Hello World in C++, Ansi-style
//============================================================================
/*
1 2 3 5
0 5 7 0
0 1 1 0
2 1 0 1
* */
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
while(n--)
{
int a,b;
int area = 0;
cin >> a >> b;
int arr[a][b];
// 输入数组
for(int i=0; i<a; i++)
{
for(int j=0; j<b; j++)
{
cin >> arr[i][j];
}
}
// 遍历数组
for(int i=0; i<a; i++)
{
for(int j=0; j<b; j++)
{
// 第一种情况:该处无方块
if(arr[i][j]==0)
{
continue;
}
// 第二种情况:该处有方块
else
{
// 求处方块漏出的面积
// 上面
area = area+1;
// 前面
if(i==a-1)
{
area += arr[i][j] * 1;
}
else if(i+1<a&&arr[i+1][j] >= arr[i][j])
{
area +=0;
}
else
{
area += arr[i][j]-arr[i+1][j];
}
// 后面
if(i==0)
{
area += arr[i][j];
}
else if(i-1>=0&&arr[i-1][j] >= arr[i][j])
{
area +=0;
}
else
{
area += arr[i][j]-arr[i-1][j];
}
// 左面
if(j==0)
{
area += arr[i][j];
}
else if(j-1>=0&&arr[i][j-1]>=arr[i][j])
{
area += 0;
}
else
{
area += arr[i][j]-arr[i][j-1];
}
// 右面
if(j==b-1)
{
area += arr[i][j];
}
else if(j+1<b&&arr[i][j+1]>=arr[i][j])
{
area += 0;
}
else
{
area += arr[i][j]-arr[i][j+1];
}
}
}
}
cout << area << endl;
}
return 0;
}
1374Problem D:正方体积木
最新推荐文章于 2022-08-21 12:19:40 发布