Advertisement
stanevplamen

02.09.03.02.SpecialValueRec

Jun 21st, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.87 KB | None | 0 0
  1. using System;
  2.  
  3. class SpecialValue
  4. {
  5.     static void SeparateNumbers(string[] allArrs)
  6.     {
  7.         string[][] numbArrInArr = new string[allArrs.Length][];
  8.         intArrInArr = new int[allArrs.Length][];
  9.         for (int i = 0; i < allArrs.Length; i++)
  10.         {
  11.             numbArrInArr[i] = allArrs[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  12.             intArrInArr[i] = new int[numbArrInArr[i].Length];
  13.             for (int j = 0; j < numbArrInArr[i].Length; j++)
  14.             {
  15.                 intArrInArr[i][j] = int.Parse(numbArrInArr[i][j].Trim());
  16.             }
  17.         }
  18.     }
  19.  
  20.     static int[][] intArrInArr;
  21.  
  22.     static int counter = 1;
  23.     static int sum = 0;
  24.  
  25.     static int FindNumberOfCells(int currentArr, int currentIndex)
  26.     {
  27.         if ((currentArr >= intArrInArr.Length - 1) && counter == 1)
  28.         {
  29.             currentArr = 0;
  30.         }
  31.         int lastNumber = intArrInArr[currentArr][currentIndex];
  32.         // проверяваме за изход
  33.         counter++;
  34.         sum = counter + Math.Abs(lastNumber);
  35.         if (intArrInArr[currentArr][currentIndex] < 0)
  36.         {
  37.             //intArrInArr[currentArr][currentIndex] = int.MaxValue;
  38.             return sum;
  39.         }
  40.         if (intArrInArr[currentArr][currentIndex] == int.MaxValue)
  41.         {
  42.             counter = 0;
  43.             return sum;
  44.         }
  45.         if (intArrInArr[currentArr][currentIndex] >= 0)
  46.         {
  47.             int tempIndex = currentIndex;
  48.             currentIndex = intArrInArr[currentArr][currentIndex];
  49.             intArrInArr[currentArr][tempIndex] = int.MaxValue;
  50.             if (currentArr >= intArrInArr.Length - 1)
  51.             {
  52.                 currentArr = -1;
  53.             }
  54.             FindNumberOfCells(currentArr + 1, currentIndex);
  55.         }
  56.         return sum;
  57.     }
  58.  
  59.  
  60.     static void Main()
  61.     {
  62.         string input = Console.ReadLine(); //"2"; //
  63.         int length = int.Parse(input);
  64.  
  65.         string[] allArrs = new string[length];
  66.  
  67.         for (int i = 0; i < allArrs.Length; i++)
  68.         {
  69.             allArrs[i] = Console.ReadLine();
  70.         }
  71.  
  72.         //allArrs[0] = "3, 2, -8, -2, -5, -3, 0, -2";
  73.  
  74.  
  75.         SeparateNumbers(allArrs);
  76.         int sum = 0;
  77.         int maxSum = 0;
  78.         for (int j = 0; j < intArrInArr[0].Length; j++)
  79.         {
  80.             counter = 1;
  81.             if (intArrInArr[0][j] < 0)
  82.             {
  83.                 sum = counter + Math.Abs(intArrInArr[0][j]);
  84.             }
  85.             else if (intArrInArr[0][j] == int.MaxValue)
  86.             {
  87.                 continue;
  88.             }
  89.  
  90.             else if (intArrInArr[0][j] >= 0)
  91.             {
  92.                 sum = FindNumberOfCells( 0 + 1, intArrInArr[0][j]);
  93.             }
  94.  
  95.             if (maxSum < sum)
  96.             {
  97.                 maxSum = sum;
  98.             }
  99.         }
  100.         Console.WriteLine(maxSum);
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement