ellapt

T8.7.BreathFirstSearch

Jan 17th, 2013
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. using System;
  2.  
  3. class BreadthFirstSearch
  4. {
  5. public static int maxBranchLength = 0;
  6. public static int currentBranchLength = 0;
  7.  
  8. public static void PrintMatrix(string[,] rectMatrix)
  9. {
  10. int maxLength = 0;
  11. foreach (string element in rectMatrix)
  12. {
  13. if (element.Length > maxLength) maxLength = element.Length;
  14. }
  15. for (int i = 0; i < rectMatrix.GetLength(0); i++)
  16. {
  17. for (int j = 0; j < rectMatrix.GetLength(1); j++)
  18. {
  19. Console.Write("{0} ", rectMatrix[i, j].PadLeft(rectMatrix[i, j].Length +
  20. (maxLength - rectMatrix[i, j].Length) / 2).PadRight(maxLength));
  21. }
  22. Console.WriteLine();
  23. }
  24. }
  25.  
  26. public static void SearchBranch(string[,] rectMatrix, int i, int j)
  27. {
  28. string elemValue = rectMatrix[i, j];
  29. rectMatrix[i, j] = " ";
  30. currentBranchLength++;
  31. for (int concat = -1; concat <= 1; concat += 2)
  32. {
  33. if (IsValid(rectMatrix, i + concat, j) && rectMatrix[i + concat, j] == elemValue)
  34. {
  35. SearchBranch(rectMatrix, i + concat, j);
  36. }
  37. if (IsValid(rectMatrix, i, j + concat) && rectMatrix[i, j + concat] == elemValue)
  38. {
  39. SearchBranch(rectMatrix, i, j + concat);
  40. }
  41. }
  42. }
  43.  
  44. public static bool IsValid(string[,] rectMatrix, int a, int b)
  45. {
  46. return a >= 0 && a < rectMatrix.GetLength(0) && b >= 0 && b < rectMatrix.GetLength(1);
  47. }
  48.  
  49. static void Main()
  50. {
  51. System.Console.WriteLine("Finds largest area of equal neighbor elements \nin a rectangular matrix and prints its size");
  52. Console.Write("Enter row size: ");
  53. int row = int.Parse(Console.ReadLine());
  54. Console.Write("Enter column size: ");
  55. int col = int.Parse(Console.ReadLine());
  56. string[,] rectMatrix = new string[row, col];
  57. Console.WriteLine("Enter values of the matrix");
  58. for (int i = 0; i < row; i++)
  59. {
  60. for (int j = 0; j < col; j++)
  61. {
  62. rectMatrix[i, j] = Console.ReadLine();
  63. }
  64. }
  65. Console.WriteLine("Source matrix:");
  66. PrintMatrix(rectMatrix);
  67. Console.WriteLine();
  68.  
  69. for (int i = 0; i < rectMatrix.GetLength(0); i++)
  70. {
  71. for (int j = 0; j < rectMatrix.GetLength(1); j++)
  72. {
  73. if (rectMatrix[i, j] != " ")
  74. {
  75. currentBranchLength = 0;
  76. SearchBranch(rectMatrix, i, j);
  77. // Current branch length ready
  78. if (currentBranchLength > maxBranchLength)
  79. {
  80. maxBranchLength = currentBranchLength;
  81. }
  82. }
  83. }
  84. }
  85. Console.WriteLine("maxBranchLength = {0}", maxBranchLength);
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment