Advertisement
TimmyChannel

5

Apr 16th, 2024
517
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.80 KB | None | 0 0
  1. using System;
  2.  
  3. class Program {
  4.     static void Main() {
  5.         int n = int.Parse(Console.ReadLine().Trim());
  6.         string[] forest = new string[n];
  7.         for (int i = 0; i < n; i++) {
  8.             forest[i] = Console.ReadLine().Trim();
  9.         }
  10.  
  11.         if (n == 0) {
  12.             Console.WriteLine(0);
  13.             return;
  14.         }
  15.  
  16.         int[,] dp = new int[n, 3];
  17.        
  18.         // Инициализация первой строки
  19.         for (int j = 0; j < 3; j++) {
  20.             if (forest[0][j] == 'W') {
  21.                 dp[0, j] = -1;
  22.             } else {
  23.                 dp[0, j] = forest[0][j] == 'C' ? 1 : 0;
  24.             }
  25.         }
  26.  
  27.         // Обработка остальных строк
  28.         for (int i = 1; i < n; i++) {
  29.             for (int j = 0; j < 3; j++) {
  30.                 if (forest[i][j] == 'W') {
  31.                     dp[i, j] = -1;
  32.                 } else {
  33.                     int maxPrev = -1;
  34.                     if (j > 0 && dp[i-1, j-1] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j-1]);
  35.                     if (dp[i-1, j] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j]);
  36.                     if (j < 2 && dp[i-1, j+1] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j+1]);
  37.  
  38.                     if (maxPrev != -1) {
  39.                         dp[i, j] = maxPrev + (forest[i][j] == 'C' ? 1 : 0);
  40.                     } else {
  41.                         dp[i, j] = -1;
  42.                     }
  43.                 }
  44.             }
  45.         }
  46.  
  47.         // Нахождение максимального количества грибов
  48.         int maxMushrooms = 0;
  49.         for (int j = 0; j < 3; j++) {
  50.             if (dp[n-1, j] > maxMushrooms) {
  51.                 maxMushrooms = dp[n-1, j];
  52.             }
  53.         }
  54.  
  55.         Console.WriteLine(maxMushrooms);
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement