1.题目描述:
2.题目理解:
注:此代码仅用了如下用例进行测试,并不能保证题目的完整解答,仅供交流学习使用,若有错误或改进之处希望在评论区留言,相互交流,共同进步!
3.c#语言实现:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace bytedance
{
class jiaobiao
{
int i, j;
public jiaobiao(int i1, int j1)
{
i = i1;
j = j1;
}
public int geti()
{
return i;
}
public int getj()
{
return j;
}
}
class Program
{
static bool haverelation(int i1, int j1, int i2, int j2)
{
if ((i1 - 1 == i2 && j1 - 1 == j2) || (i1 - 1 == i2 && j1 == j2) || (i1 - 1 == i2 && j1 + 1 == j2) || (i1 == i2 && j1 - 1 == j2) || (i1 == i2 && j1 + 1 == j2) || (i1 + 1 == i2 && j1 - 1 == j2) || (i1 + 1 == i2 && j1 == j2) || (i1 + 1 == i2 && j1 + 1 == j2))
{
return true;
}
else
return false;
}
static void Main(string[] args)
{
string s;
s = Console.ReadLine();
int n = int.Parse(s.Split(' ')[0]);
int m = int.Parse(s.Split(' ')[1]);
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
{
string[] b = new string[m];
b = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
{
a[i, j] = int.Parse(b[j]);
}
}
List<jiaobiao> arr1 = new List<jiaobiao>();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (a[i, j] == 1)
{
arr1.Add(new jiaobiao(i, j));
}
}
}
List<int>[] arr2 = new List<int>[arr1.Count];
for (int i = 0; i < arr2.Length; i++)
{
arr2[i] = new List<int>();
}
for (int i = 0; i < arr1.Count; i++)
for (int j = 0; j < arr1.Count; j++)
{
if (i != j && haverelation(arr1[i].geti(), arr1[i].getj(), arr1[j].geti(), arr1[j].getj()))
{
arr2[i].Add(j);
}
}
Console.WriteLine("连接关系");
for (int i = 0; i < arr2.Length; i++)
{
for (int j = 0; j < arr2[i].Count; j++)
Console.Write(arr2[i][j] + " ");
Console.Write("\n");
}
bool[] state = new bool[arr2.Length];
for (int i = 0; i < state.Length; i++)
state[i] = true;
int count = 0;
for (int i = 0; (i < arr2.Length); i++)
{
if (state[i] == true)
{
count++;
dfs(arr2,state,i);
}
}
}
Console.WriteLine(count);
}
static void dfs( List<int>[] arr, bool[] state,int index)
{
if (state[index])
for (int i = 0; i < arr[index].Count; i++)
{
state[index] = false;
{
dfs(arr, state, arr[index][i]);
}
}
}
}
}
测试程序: 用例输入1:
3 5
0 1 0 0 0
0 0 0 1 0
1 0 0 0 0
用例输入2:
4 5
1 1 0 1 0
1 0 0 1 1
1 1 1 0 0
0 0 0 0 1
用例输入3:
4 5
1 1 0 1 0
0 0 0 1 1
1 1 1 0 0
0 0 0 0 1
用例输入4:
5 10
1 0 1 0 1 0 0 0 1 1
0 0 0 1 1 1 0 1 0 0
0 1 0 1 1 0 0 1 0 1
0 0 1 0 0 1 0 0 0 1
1 1 0 0 0 1 0 0 1 1