检查矩阵行是不是是回文(数组中的数组)

Posted

技术标签:

【中文标题】检查矩阵行是不是是回文(数组中的数组)【英文标题】:To check if matrix row is an palindrome (array in array)检查矩阵行是否是回文(数组中的数组) 【发布时间】:2021-11-10 09:16:04 【问题描述】:

任务是我需要检查数组(二维数组)中的数组是否为回文 问题是我在第 40 行遇到“超出范围”异常,无法弄清楚如何告诉计算机在那里进行正确计算:if (arr[i, j] != arr[arr.GetLength(1) - i, j - 1])

我需要将 if (arr[i] != arr[n - i - 1]) 解释为二维数组。 到目前为止,这是我的代码:```

class Program
    
        static void Main(string[] args)
        

            Random rnd = new Random();
            int n;
            n = Convert.ToInt32(Console.ReadLine());
            int[,] arr = new int[n, n];


            
            for (int i = 0; i < arr.GetLength(0); i++)
            
                for(int j = 0; j < arr.GetLength(1); j++)
                
                    arr[i, j] = rnd.Next(1, 15);
                
            

            for (int i = 0; i < arr.GetLength(0); i++)
            
                for (int j = 0; j < arr.GetLength(1); j++)
                
                    Console.WriteLine(arr[i, j]);
                
            


            int flag = 0;
            for (int i = 0; i < arr.GetLength(0); i++)
            

                for (int j = 0; j <= arr.GetLength(1) / 2 && n != 0; j++)
                
                    if (arr[i, j] != arr[arr.GetLength(1) - i, j - 1])
                    
                        Console.WriteLine(i);
                        flag = 1;
                        break;
                    

                
            
            if (flag == 1)
            
                Console.WriteLine("pali");
            
            else
            
                Console.WriteLine("not pali");
            
        
    

【问题讨论】:

【参考方案1】:

正在寻找这样的东西吗?

namespace ConsoleApp

    class Program
    
        static void Main(string[] args)
        
            int[,] arr = new int[,]
            
                 1, 2, 3, 4, 5, 6 ,
                 1, 2, 3, 4, 5, 6 ,
                 1, 2, 3, 3, 2, 1 ,      // Palindrome
                 1, 2, 3, 4, 5, 6 ,
                 1, 2, 3, 4, 5, 6 
            ;
            PrintArray(arr);
            CheckForPalindrome(arr);
        

        static void PrintArray(int[,] arr)
        
            for (int i = 0; i < arr.GetLength(0); i++)
            
                for (int j = 0; j < arr.GetLength(1); j++)
                
                    Console.Write($"arr[i, j] ");
                
                Console.WriteLine();
            
        

        static void CheckForPalindrome(int[,] arr)
        
            for (int i = 0; i < arr.GetLength(0); i++)
            
                var equals = true;
                for (int j = 0; j < arr.GetLength(1) / 2; j++)
                
                    equals = arr[i, j] == arr[i, arr.GetLength(1) - j - 1];
                    if (equals == false)
                        break;
                
                if (equals == true)
                    Console.WriteLine($"Row i + 1 is palindrome");
            
        
    

【讨论】:

是的!谢谢!

以上是关于检查矩阵行是不是是回文(数组中的数组)的主要内容,如果未能解决你的问题,请参考以下文章

乘以存储在一维数组算法中的上三角矩阵

MATLAB将元胞数组中特定行列转换为矩阵

如何检查numpy矩阵的列中的所有值是不是相同?

从 Java 中的二维数组矩阵中获取行和列

检查每行C++的数组行中是不是总是有相同的值

如何将文件中的整数读入动态数组