Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class Program {
- static void Main() {
- int n = int.Parse(Console.ReadLine().Trim());
- string[] forest = new string[n];
- for (int i = 0; i < n; i++) {
- forest[i] = Console.ReadLine().Trim();
- }
- if (n == 0) {
- Console.WriteLine(0);
- return;
- }
- int[,] dp = new int[n, 3];
- // Инициализация первой строки
- for (int j = 0; j < 3; j++) {
- if (forest[0][j] == 'W') {
- dp[0, j] = -1;
- } else {
- dp[0, j] = forest[0][j] == 'C' ? 1 : 0;
- }
- }
- // Обработка остальных строк
- for (int i = 1; i < n; i++) {
- for (int j = 0; j < 3; j++) {
- if (forest[i][j] == 'W') {
- dp[i, j] = -1;
- } else {
- int maxPrev = -1;
- if (j > 0 && dp[i-1, j-1] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j-1]);
- if (dp[i-1, j] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j]);
- if (j < 2 && dp[i-1, j+1] != -1) maxPrev = Math.Max(maxPrev, dp[i-1, j+1]);
- if (maxPrev != -1) {
- dp[i, j] = maxPrev + (forest[i][j] == 'C' ? 1 : 0);
- } else {
- dp[i, j] = -1;
- }
- }
- }
- }
- // Нахождение максимального количества грибов
- int maxMushrooms = 0;
- for (int j = 0; j < 3; j++) {
- if (dp[n-1, j] > maxMushrooms) {
- maxMushrooms = dp[n-1, j];
- }
- }
- Console.WriteLine(maxMushrooms);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement