Advertisement
butoff

Knigt's tour

Mar 30th, 2018
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.89 KB | None | 0 0
  1. using System;
  2.  
  3. public class Program
  4. {
  5.     private static int[,] matrix;
  6.     private static int size;
  7.     private static int counter;
  8.  
  9.     static void Main()
  10.     {
  11.         size = int.Parse(Console.ReadLine());
  12.  
  13.         matrix = new int[size, size];
  14.  
  15.         InitMatrix();
  16.  
  17.         TraverseMatrix(0,0);
  18.  
  19.         PrintMatrix();
  20.     }
  21.  
  22.     private static void TraverseMatrix(int row, int col)
  23.     {
  24.         if (IsOutside(row, col))
  25.         {
  26.             return;
  27.         }
  28.  
  29.         if (matrix[row, col] != 0)
  30.         {
  31.             return;
  32.         }
  33.         counter++;
  34.         matrix[row, col] = counter;
  35.  
  36.         TraverseMatrix(row - 1, col + 2);       // Right Up
  37.         TraverseMatrix(row + 1, col + 2);       // Right Down
  38.         TraverseMatrix(row + 2, col + 1);       // Down Right
  39.         TraverseMatrix(row + 2, col - 1);       // Down Left
  40.         TraverseMatrix(row + 1, col - 2);       // Left Down
  41.         TraverseMatrix(row - 1, col - 2);       // Left Up
  42.         TraverseMatrix(row - 2, col - 1);       // Up Left
  43.         TraverseMatrix(row - 2, col + 1);       // Up Left        
  44.     }
  45.  
  46.     private static bool IsOutside(int row, int col)
  47.     {
  48.         if (row >= 0 && row < size && col >= 0 && col < size)
  49.         {
  50.             return false;
  51.         }
  52.        
  53.         return true;
  54.     }
  55.  
  56.     private static void InitMatrix()
  57.     {
  58.         for (int r = 0; r < size; r++)
  59.         {
  60.             for (int c = 0; c < size; c++)
  61.             {
  62.                 matrix[r, c] = 0;
  63.             }
  64.         }
  65.     }
  66.  
  67.     private static void PrintMatrix()
  68.     {
  69.         for (int r = 0; r < size; r++)
  70.         {
  71.             for (int c = 0; c < size; c++)
  72.             {
  73.                 string cell = matrix[r, c].ToString();
  74.                 Console.Write(cell.PadLeft(4, ' '));                
  75.             }
  76.             Console.WriteLine();
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement