电影院的舞台可以看成是由 nn 行 mm 列的矩形的方格组成。现在导演告诉你每个方格上是否有演员站着。你现在是一名灯光师,你需要将聚光灯放置在合适的位置。聚光灯会根据放置的方向会向上、下、左、右四个方向中的一个方向发射光束。如果在光束方向上有演员,那么会照亮该演员。一个合适的摆放位置(摆放位置包括坐标和方向)满足两个条件:
- 该位置没有演员
- 聚光灯能照射到至少一个演员
计算有多少合适的摆放位置。
注意 同一格子不同的方向也被看作不同的位置。
输入格式
第一行输入两个空格隔开的整数 n,mn,m。
接下来 nn 行,每行输入 mm 个整数,每个整数是 00 或者 11。00 表示该方格上没有演员,11 表示该方格上有演员。
数据约定:
对于 50% 的数据:1 \le n,m \le 1001≤n,m≤100。
对于 100% 的数据:1 \le n, m \le 10001≤n,m≤1000。
输出格式
输出一个整数,表示合适的摆放位置总数。
样例输入
2 4 0 1 0 0 1 0 1 0
样例输出
9
这个题,直接暴力枚举它的上下作业是否有演员
#include<bits/stdc++.h>
using namespace std;
int a[1005][1005]={0};
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==0)
{
for(int k=0;k<i;k++)
{
if(a[k][j]==1)
{
sum+=1;
break;
}
}
for(int k=i+1;k<=n;k++)
{
if(a[k][j]==1)
{
sum+=1;
break;
}
}
for(int k=0;k<j;k++)
{
if(a[i][k]==1)
{
sum+=1;
break;
}
}
for(int k=j+1;k<=m;k++)
{
if(a[i][k]==1)
{
sum+=1;
break;
}
}
}
}
}
cout<<sum;
}