赞
踩
小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 或 1 。
- 110010000011111110101001001001101010111011011011101001111110
- 010000000001010001101100000010010110001111100010101100011110
- 001011101000100011111111111010000010010101010111001000010100
- 101100001101011101101011011001000110111111010000000110110000
- 010101100100010000111000100111100110001110111101010011001011
- 010011011010011110111101111001001001010111110001101000100011
- 101001011000110100001101011000000110110110100100110111101011
- 101111000000101000111001100010110000100110001001000101011001
- 001110111010001011110000001111100001010101001110011010101110
- 001010101000110001011111001010111111100110000011011111101010
- 011111100011001110100101001011110011000101011000100111001011
- 011010001101011110011011111010111110010100101000110111010110
- 001110000111100100101110001011101010001100010111110111011011
- 111100001000001100010110101100111001001111100100110000001101
- 001110010000000111011110000011000010101000111000000110101101
- 100100011101011111001101001010011111110010111101000010000111
- 110010100110101100001101111101010011000110101100000110001010
- 110101101100001110000100010001001010100010110100100001000011
- 100100000100001101010101001101000101101000000101111110001010
- 101101011010101000111110110000110100000010011111111100110010
- 101111000100000100011000010001011111001010010001010110001010
- 001010001110101010000100010011101001010101101101010111100101
- 001111110000101100010111111100000100101010000001011101100001
- 101011110010000010010110000100001010011111100011011000110010
- 011110010100011101100101111101000001011100001011010001110011
- 000101000101000010010010110111000010101111001101100110011100
- 100011100110011111000110011001111100001110110111001001000111
- 111011000110001000110111011001011110010010010110101000011111
- 011110011110110110011011001011010000100100101010110000010011
- 010011110011100101010101111010001001001111101111101110011101
如果从一个标为 1 的位置可以通过上下左右走到另一个标为 1 的位置,则称两个位置连通。与某一个标为 1 的位置连通的所有位置(包括自己)组成一个连通分块。
请问矩阵中最大的连通分块有多大?
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
最大运行时间:1s最大运行内存:256M
知识点:深度优先搜索,字符数组
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int N=101;
- char a[N][N];
- int row=30,col=60;
- int cnt;//最大连通块中1的数量
- int dx[4]={0,0,-1,1},dy[5]={1,-1,0,0};//“上、下、左、右”四个方向
- int dfs(int x,int y)
- {
- if(a[x][y]=='0')
- {
- return 0;
- }
- a[x][y]='0';
- int sum=1;//连通块中1的数量
- for(int i=0;i<4;i++)//四个方向遍历
- {
- int nx=x+dx[i],ny=y+dy[i];
- if(nx<0||ny<0||nx>=row||ny>=col)
- {
- continue;
- }
- sum+=dfs(nx,ny);
- }
- return sum;
- }
- int main()
- {
- // for(int i=0;i<row;i++)
- // {
- // cin>>a[i];
- // }
- // for(int i=0;i<row;i++)
- // {
- // for(int j=0;j<col;j++)
- // {
- // if(a[i][j]=='0')
- // {
- // continue;
- // }
- // cnt=max(cnt,dfs(i,j));
- // }
- // }
- // cout<<cnt<<endl;
- cout<<148<<endl;
- return 0;
- }
因为是填空题,为了减小时间复杂度,直接输出结果,将主体代码注释掉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。