Advertisement
vvsvvs

Untitled

May 21st, 2022
861
145 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. namespace Knight_Game
  4. {
  5.     class Program
  6.     {
  7.         static bool ResultCheck(int maxRow, int maxCol, int row, int col)
  8.         {
  9.             bool result = true;
  10.  
  11.             result = ((result) && (row >= 0) && (col >= 0));
  12.             result = ((result) && (row < maxRow) && (col < maxCol));
  13.  
  14.             return result;
  15.         }// bool ResultCheck(int maxRow, int maxCol, int row, int col)
  16.  
  17.         static bool IsHitKnight(byte[,] board, int row, int col, byte indexJump)
  18.         {
  19.             bool result = false;
  20.  
  21.             switch (indexJump)
  22.             {
  23.                 case 1:
  24.                     row -= 1;
  25.                     col -= 2;
  26.                     break;
  27.                 case 2:
  28.                     row -= 1;
  29.                     col += 2;
  30.                     break;
  31.                 case 3:
  32.                     row += 1;
  33.                     col += 2;
  34.                     break;
  35.                 case 4:
  36.                     row += 1;
  37.                     col -= 2;
  38.                     break;
  39.                 case 5:
  40.                     row -= 2;
  41.                     col -= 1;
  42.                     break;
  43.                 case 6:
  44.                     row -= 2;
  45.                     col += 1;
  46.                     break;
  47.                 case 7:                
  48.                     row += 2;
  49.                     col += 1;
  50.                     break;
  51.                 case 8:
  52.                     row += 2;
  53.                     col -= 1;
  54.                     break;
  55.                 default:
  56.                     break;
  57.             }
  58.  
  59.             result = ResultCheck(board.GetLength(0), board.GetLength(1), row, col);
  60.  
  61.             if (result)
  62.             {
  63.                 result = false;
  64.                 if (board[row, col].Equals(1))
  65.                 {                  
  66.                     result = true;
  67.                 }
  68.             }
  69.  
  70.             return result;
  71.         }// bool ValidIndex(byte[,] board, int row, int col, byte indexJump)
  72.  
  73.         static void Main(string[] args)
  74.         {
  75.             int n = int.Parse(Console.ReadLine());
  76.  
  77.             byte[,] board = new byte[n, n];
  78.  
  79.             for (int row = 0; row < n; row++)
  80.             {
  81.                 char[] input = Console.ReadLine().ToCharArray();
  82.  
  83.                 for (int col = 0; col < input.Length; col++)
  84.                 {
  85.                     switch (input[col].ToString().ToLower())
  86.                     {
  87.                         case "0":
  88.                             board[row, col] = 0;
  89.                             break;
  90.                         case "k":
  91.                             board[row, col] = 1;
  92.                             break;
  93.                         default:
  94.                             break;
  95.                     }
  96.                 }
  97.             }
  98.  
  99.             int currentMaxHit = -1;
  100.             int countKnight = 0;
  101.  
  102.             while (currentMaxHit != 0)
  103.             {
  104.                 currentMaxHit = 0;              
  105.                 int currentMaxHitRow = 0;              
  106.                 int currentMaxHitCol = 0;
  107.                
  108.                 for (int row = 0; row < board.GetLength(0); row++)
  109.                 {
  110.                     for (int col = 0; col < board.GetLength(1); col++)
  111.                     {
  112.                         if (board[row, col].Equals(1))
  113.                         {
  114.                             int currentHit = 0;
  115.                             int currentHitRow = 0;
  116.                             int currentHitCol = 0;
  117.                             for (byte i = 1; i <= 8; i++)
  118.                             {
  119.                                 if (IsHitKnight(board, row, col, i))
  120.                                 {
  121.                                     currentHit++;
  122.                                     currentHitCol = col;
  123.                                     currentHitRow = row;
  124.  
  125.                                 }
  126.                             }
  127.  
  128.                             if (currentHit > currentMaxHit)
  129.                             {
  130.                                 currentMaxHit = currentHit;
  131.                                 currentMaxHitRow = currentHitRow;
  132.                                 currentMaxHitCol = currentHitCol;
  133.                             }
  134.                         }
  135.                     }
  136.                 }
  137.  
  138.                 if (currentMaxHit != 0)
  139.                 {
  140.                     board[currentMaxHitRow, currentMaxHitCol] = 0;
  141.                     countKnight++;
  142.                 }
  143.             }// while (countKnight != 0)
  144.  
  145.             Console.WriteLine(countKnight);            
  146.         }
  147.     }
  148. }
Advertisement
RAW Paste Data Copied
Advertisement