题目描述
如图所示的数字矩阵是由数字0~9组成,其中数字0代表树,1~9代表猴子,凡是由0或矩形边围起来的区域表示有一群猴子在这一带。现在想知道某个位置如果有猴子则查看与它同行,同列并且是同一猴群的有几只(包含自己)。若没有则输出NO
输入
第一行为矩阵的行数m,列数n,m<100,n<100
下面的m行为一个m*n的数字矩阵
最后输入一个坐标x,y,若该位置有猴子则查看与它同行,同列并且是同一猴群的有几群(包含自己)。若没有则输出NO
输出
一行一个数,表示猴群的数目或者NO
样例输入
4 10 0234500067 1034560500 2045600671 0000000089 2 6
样例输出
4
#include<bits/stdc++.h>
using namespace std;
char a[105][105];int n,m,x,y,s=1,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){cin>>a[i][j];}}cin>>x>>y;if(a[x][y]=='0'){cout<<"NO";return 0;}
for(int i=0;i<4;i++){
int xx=x;
int yy=y;
while(1){
xx+=dx[i];yy+=dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='0'){s+=1;}else{break;}
}}
cout<<s;
return 0;}