矩阵邻居

给你一个矩阵,让你算出它的四邻八方,方法一很简单,判断有没超出索引就是了,方法二用第二个矩阵来记录方向,让矩阵第一个数等于要移动的方向

方法一
    public class Neighbors
    {
        public static void Acees(int[][] m)
        {
            if(m==null) return;
            int h=m.Length;
            int w=m[0].Length;
            for(int r=0;r<h;r++)
            {
                for(int c=0;c<w;c++)
                {
                    //方法一
                    Console.Write($"Home{m[r][c]}:");
                    if(r-1>=0) Console.Write($"{m[r-1][c]}\t");
                    if(r+1<h) Console.Write($"{m[r+1][c]}\t");
                    if(c-1>=0) Console.Write($"{m[r][c-1]}\t");
                    if(c+1<w) Console.Write($"{m[r][c+1]}\t");

                }
                Console.WriteLine();
            }
        }
    }

方法二
    public class Neighbors
    {
        public static void Acees(int[][] m)
        {
            if(m==null) return;
            int[][] a=new int[][]
            {
                new int[]{-1,0},
                new int[]{1,0},
                new int[]{0,-1},
                new int[]{0,1},
            };
            int h=m.Length;
            int w=m[0].Length;
            for(int r=0;r<h;r++)
            {
                for(int c=0;c<w;c++)
                {

                    Console.Write($"Home{m[r][c]}:");
                    foreach (var item in a)
                    {
                        int nr=r+item[0];
                        int nc=c+item[1];
                        if(nr>=0&&nr<h&&nc>=0&&nc<w)
                        {
                            Console.Write($"{m[nr][nc]}\t");
                        }
                    }
                }
                Console.WriteLine();
            }
        }
    }
Programs.cs
    static void Main(string[] arg)
    {
        int[][] m=new int[][]
        {
            new int[]{1,2,3,4,5},
            new int[]{6,7,8,9,10},
            new int[]{11,12,13,14,15},
        };
        Neighbors.Acees(m);
    }
posted @ 2022-02-15 13:49  Ariaaaaa  阅读(7)  评论(0)    收藏  举报