Venciity

[ Telerik C#] MultidimArrays 02-FindKxKPlatformHavingMax

Feb 28th, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.64 KB | None | 0 0
  1. using System;
  2.  
  3. class Program
  4. {
  5.     static void PrintMatrix(int[,] matrix)
  6.     {
  7.         int max = matrix[0, 0];
  8.         foreach (int cell in matrix) max = Math.Max(max, cell);
  9.         int cellSize = (int)Math.Log10(max) + 1;
  10.  
  11.         for (int i = 0; i < matrix.GetLength(0); i++)
  12.             for (int j = 0; j < matrix.GetLength(1); j++)
  13.                 Console.Write(Convert.ToString(matrix[i, j]).PadRight(cellSize, ' ') + (j != matrix.GetLength(1) - 1 ? " " : "\n"));
  14.     }
  15.  
  16.     static int MakeSum(int[,] matrix, int k, int row, int col)
  17.     {
  18.         int sum = 0;
  19.  
  20.         for (int i = 0; i < k; i++)
  21.             for (int j = 0; j < k; j++)
  22.                 sum += matrix[row + i, col + j];
  23.  
  24.         return sum;
  25.     }
  26.  
  27.     static void Main()
  28.     {
  29.         int[,] matrix = { { 1, 2, 3, 4 }, { 10, 20, 30, 40 }, { 100, 200, 300, 400 }, { 1000, 2000, 3000, 4000 } };
  30.         int k = 3; // Square size
  31.  
  32.         int maxSum = int.MinValue, maxRow = -1, maxCol = -1;
  33.  
  34.         for (int i = 0; i <= matrix.GetLength(0) - k; i++)
  35.         {
  36.             for (int j = 0; j <= matrix.GetLength(1) - k; j++)
  37.             {
  38.                 int currentSum = MakeSum(matrix, k, i, j);
  39.  
  40.                 if (currentSum >= maxSum)
  41.                 {
  42.                     maxSum = currentSum;
  43.                     maxRow = i;
  44.                     maxCol = j;
  45.                 }
  46.             }
  47.         }
  48.  
  49.         // Print result
  50.         int[,] result = new int[k, k];
  51.  
  52.         for (int i = 0; i < k; i++)
  53.             for (int j = 0; j < k; j++)
  54.                 result[i, j] = matrix[maxRow + i, maxCol + j];
  55.  
  56.         PrintMatrix(result);
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment