题目:
杜老师非常喜欢玩一种叫做“美术馆”的数字游戏,蜗蜗看了之后决定也来试一试,他改编了这个游戏,规则如下:
有一个 n� 行 m� 列的方格,每一个格子中有一个数,数字为 00 则表示这个地方啥也没有,是空着的,数字为 11 表示这个地方有一盏灯。对于一盏灯,它所在的行和所在的列都能被照亮(包括它自己)例如对于下面这张图:
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 0
用 (i,j)(�,�) 表示第 i� 行第 j� 列的位置。其中 (2,2)(2,2) 是一盏灯,(3,3)(3,3) 也是一盏灯。
那么对于 (2,2)(2,2) 这盏灯来说,(1,2),(2,1),(2,2),(2,3),(2,4),(3,2),(4,2)(1,2),(2,1),(2,2),(2,3),(2,4),(3,2),(4,2) 都是能被照亮的;
对于 (3,3)(3,3) 这盏灯来说,(1,3),(2,3),(3,1),(3,2),(3,3),(3,4),(4,3)(1,3),(2,3),(3,1),(3,2),(3,3),(3,4),(4,3) 都是能被照亮的。
所以最后,亮着的地方是 (1,2),(1,3),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4),(4,2),(4,3)(1,2),(1,3),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4),(4,2),(4,3) 这 1212 个位置,注意,同时被多盏灯照亮只会统计一次。
请你帮蜗蜗算一算,最后有多少个位置没有被照亮,并输出。
输入格式
第一行,两个正整数 n,m�,�。
接下来 n� 行,每行 m� 个数字,表示 n� 行 m� 列的方格。
输出格式
一行,一个数,表示结果。
样例输入
4 4
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 0
样例输出
4
数据范围
对于 100%100% 的数据,保证 1≤n,m≤2×1031≤�,�≤2×103, 方格中数字 ∈{0,1}∈{0,1}。
代码:
#include <iostream>
#include <cstring>
using namespace std;
int h[3000],l[3000],ikun;
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ ){
int x;
cin>>x;
if(x){
h [i] =1;
l [j] =1;
}
}
int hang = 0 ;
int lie = 0 ;
int res = 0 ;
for(int i=1;i<=n;i++){
if(h[i])
hang++;
}
for(int i=1;i<=m;i++){
if(l[i]){
lie++;
}
}
res=n*m-(hang*m+lie*n-hang*lie);
cout << res << endl;
return 0;
}
思路:
首先把亮着的光记录下来,然后总数减去亮着的光。