判斷上下左右,可以透過陣列定義變量的方式,用迴圈輕鬆解決。
[C++] 純文本查看 復制代碼 #include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int map[52][52];
int dx[4]={0,0,1,-1};
int dy[4]={-1,1,0,0};
int main()
{
int T;
int N,M,K,ans;
cin>>T;
while(T--)
{
memset(map,0,sizeof(map));
ans=0;
cin>>N>>M>>K;
for(int i=1;i<=N;++i)
for(int j=1;j<=M;++j)
cin>>map[i][j];
for(int i=1;i<=N;++i)
{
for(int j=1;j<=M;++j)
{
if(map[i][j]==1)ans++;
else
{
bool f=false;
for(int k=0;k<4;++k)
if(map[i+dx[k]][j+dy[k]]==1)
f=true;
if(f)ans++;
}
}
cout<<endl;
}
cout<<N*M*K-ans*min(ans,3)<<endl;
}
} |