求助
  • 板块灌水区
  • 楼主q1111111q
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/7 16:14
  • 上次更新2025/2/7 16:17:46
查看原帖
求助
1487375
q1111111q楼主2025/2/7 16:14

时间限制:1秒 内存限制:128M 题目描述 给出一个由数字0~9组成的矩形,其中数字0代表树,1~9代表猴子,凡是由0或矩形边围起来的区域表示有一群猴子在这一带。编程求矩形中有多少群猴子

输入描述 第一行两个正整数,表示矩形的行数m和列数n,1<=m,n<=100

下面为一个mxn的数字矩形

输出描述 一行一个数,表示猴群的数目

样例 输入 7 6 100100 000003 000000 000000 050100 004000 000000 输出 6

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a[15][15],ans,n;
int dx[]={0,0,1,-1,1,1,-1,-1};
int dy[]={1,-1,0,0,1,-1,1,-1};
void dfs(int x,int y){
	if(x==1&&y==n){
		ans++;
		return ;
	}
	a[x][y]=1;
	for(int i=0;i<8;i++){
		int tx=x+dx[i],ty=y+dy[i];
		if(tx<1||tx>n||ty<1||ty>n)    continue;
		if(a[tx][ty]==0){
			dfs(tx,ty);
		}
	}
		
	a[x][y]=0;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
    		a[i][j]=1;
		}
	}
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
    		scanf("%1d",&a[i][j]);
		}
	}
	dfs(1,1);
	cout<<ans;
	return 0;
}

百分之42

2025/2/7 16:14
加载中...