Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,860 questions

51,780 answers

573 users

How to find max product of 4 adjacent numbers in the same direction in a 20×20 grid with C#

1 Answer

0 votes
using System;

public class Program
{
    static int rows = 20;
    static int columns = 20;
        
    public static void PrintGrid(int[,] grid) {
        for (int i = 0; i < grid.GetLength(0); i++) {
            for (int j = 0; j < grid.GetLength(1); j++) {
                Console.Write(grid[i, j].ToString().PadLeft(4) + " ");
            }
            Console.WriteLine();
        }
    }
    
	private static int[,] generateRandomInteger(int size) {
	    Random random = new Random();

        int[,] matrix = new int[rows, columns];

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                matrix[i, j] = random.Next(1, 101); 
            }
        }

		return matrix;
	}
	
	static int FindMaxProduct(int[,] grid, int size) {
        int max = 0, product;
        int n1 = 0, n2 = 0, n3 = 0, n4 = 0;
           
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size - 3; j++) {
                product = grid[i, j] * grid[i, j + 1] * grid[i, j + 2] * grid[i, j + 3];
                if (product > max) {
                    n1 = grid[i, j]; n2 = grid[i, j + 1]; n3 = grid[i, j + 2]; n4 = grid[i, j + 3];
                    max = product;
                }
            }
        }
                      
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size - 3; j++) {
                product = grid[j, i] * grid[j + 1, i] * grid[j + 2, i] * grid[j + 3, i];
                if (product > max) {
                    n1 = grid[i, j]; n2 = grid[j + 1, i]; n3 = grid[j + 2, i]; n4 = grid[j + 2, i];
                    max = product;
                }
            }
        }
              
        for (int i = 0; i < size - 3; i++) {
            for (int j = 0; j < size - 3; j++) {
                product = grid[j, i] * grid[j + 1, i + 1] * grid[j + 2, i + 2] * grid[j + 3, i + 3];
                if (product > max) {
                    n1 = grid[j, i]; n2 = grid[j + 1, i + 1]; n3 = grid[j + 2, i + 2]; n4 = grid[j + 3, i + 3];
                    max = product;
                }
            }
        }
              
        for (int i = 0; i < size - 3; i++) {
            for (int j = 3; j < size; j++) {
                product = grid[j, i] * grid[j - 1, i + 1] * grid[j - 2, i + 2] * grid[j - 3, i + 3];
                if (product > max) {
                    n1 = grid[j, i]; n2 = grid[j - 1, i + 1]; n3 = grid[j - 2, i + 2]; n4 = grid[j - 3, i + 3];
                    max = product;
                }
            }
        }
                       
        Console.Write("\n" + n1 + " * " + n2 + " * " + n3 + " * " + n4 + " = ");
    
        return max;
    }

    static void Main(string[] args)
    {
        int[,] grid = generateRandomInteger(20);


        PrintGrid(grid);
        
        
        Console.Write(FindMaxProduct(grid, 20));
    }
}




/*
run:

  89   20   74   48   18   20   54   81   29   66   50    6   55   17    3   14    4   96   78   92 
  18   93   65   95  100   89   40   45   90   54   44   75   94   84   43    8   95    1    3   48 
  62   34   57   87   56   56   72   11   85    6   70   25   52  100   72   96   55   80   49   29 
  81   10   91   75   22   75   13   71   75   96   19    4   94   31   31   84   37   79   40   44 
  17   29   61   84   85   19   24   94   13   47   53   16   52   74   67   52   43   82   65   81 
  44    2   37   89   87   66   32   21   70   88   60   77   41    5   12   52   49    8   91    3 
  52   19   58   28   44    4   52   20   64   79   41   55   15   59    1   16   93   72   97   19 
  87    3   25   25   87   76   76   48   62   16    3   36   92   62   30   25   44    9   46   84 
  14   12   57   91   48    5   63   82    4   97   60   78   12   72   16   49   95   34   41   68 
  29    5   59   49   77    6   64   53   30   77   73   84   27   13    6   75   47   34   78   82 
  14   94   45   66   56   26   25   20   46   82   30   10   68   78   56   10   54    9   15   42 
  42   10   53   28   25   76   51   99   67   41    3   61   57   60   54   35   61   94   93   51 
  82   44    7   48   48   63   17   49   58   96   22   39   20   36   41    5   42   17   42   81 
  76   26   54    6   79   69   54    9   25   21   50   61   16   64   60   98    4    5   80   62 
  60    2   41   72   20   65   42   21   19   50   94   44   52   13   76   56   91    2   70   79 
   9    8   25   38   46   61   23   57   77   43    2   37   38   80   21   74   86   83   86   15 
  28   34   90   75   28    7    9    3   89    5    7    2   36    2   53   52   77    3   26   59 
  42   85   45   77   48   57    7   73   92    2   71    9   16   55   52   76   19   50   11   40 
  52   21   68   73   37  100    1   36   27   70   98   83   57   27   74   43   90   14   27   71 
   1   36   12   88   34   98   86   82   51   78   34   27   93   86    8   22   18   72   40   49 

93 * 65 * 95 * 100 = 57427500
  
*/

 



answered Nov 2, 2023 by avibootz
...