Blue World
给你一个二维数组,再给你一个值,二维数组里得值低于这个数时,会变抹平,最后返回一个值
点击查看代码
public static int Blue(int[][] m,int level)
{
if(m==null) return 0;
int count=0;
int h=m.Length;
int w=m[0].Length;
for(int r=0;r<h;r++)
{
for(int c=0;c<w;c++)
{
m[r][c]=m[r][c]>level?1:0;
}
}
int[][] dic=new int[][]
{
new int[]{-1,0},
new int[]{1,0},
new int[]{0,-1},
new int[]{0,1},
};
for(int r=0;r<h;r++)
{
for(int c=0;c<w;c++)
{
if(m[r][c]==0) continue;
count++;
var q=new Queue<int>();
m[r][c]=0;
q.Enqueue(r);
q.Enqueue(c);
while(q.Count>0)
{
int nr=q.Dequeue();
int nc=q.Dequeue();
foreach (var item in dic)
{
int cr=nr+item[0];
int cc=nc+item[1];
if(cr>=0&&cr<h&&cc>=0&&cc<w)
{
if(m[cr][cc]==1)
{
m[cr][cc]=0;
q.Enqueue(cr);
q.Enqueue(cc);
}
}
}
}
}
}
return count;
}
}
点击查看代码
static void Main(string[] arg)
{
int[][] m=new int[][]
{
new int[]{0,1,0,0,0},
new int[]{2,1,2,0,0},
new int[]{0,1,4,3,0},
new int[]{3,1,3,3,0},
new int[]{0,2,0,0,0},
};
var result=blue.Blue(m,2);
System.Console.WriteLine(result);
}

浙公网安备 33010602011771号