Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. void getStartAndEndOfAWord(char sentence[], char words[400][200], int &num_of_words)
  4. {
  5.         int position_sentence = 0, position_word_column = 0;
  6.         num_of_words = 0;
  7.         while (sentence[position_sentence] != 0)
  8.         {
  9.                 if ((sentence[position_sentence] >= 'a' && sentence[position_sentence] <= 'z')
  10.                         || sentence[position_sentence] >= 'A' && sentence[position_sentence] <= 'Z')
  11.                 {
  12.                         words[num_of_words][position_word_column] = sentence[position_sentence];
  13.                         position_word_column++;
  14.                 }
  15.                 if (sentence[position_sentence + 1] == 0 || sentence[position_sentence] == ' ')
  16.                 {
  17.                         words[num_of_words][position_word_column] = 0;
  18.                         num_of_words++;
  19.                         position_word_column = 0;
  20.                 }
  21.                 position_sentence++;
  22.         }
  23. }
  24. bool compareStrings(char* word_sentence, char* word_grid)
  25. {
  26.         int position = 0;
  27.         while (word_sentence[position] != 0 && word_grid[position] != 0)
  28.         {
  29.                 if (word_sentence[position] != word_grid[position])
  30.                 {
  31.                         return 0;
  32.                 }
  33.                 position++;
  34.         }
  35.         return word_sentence[position] == word_grid[position];
  36. }
  37. int searchForRoutes(char words[][200], char grid[][30][101], int num_of_words, int start_counting,
  38.         int current_position_row, int current_position_column, int gridRows, int gridColumns)
  39. {
  40.         int num_steps = 0;
  41.         if (start_counting == num_of_words)
  42.         {
  43.                 return 1;
  44.         }
  45.         for (int position_row = -1; position_row < 2; position_row++)
  46.         {
  47.                 for (int position_column = -1; position_column < 2; position_column++)
  48.                 {
  49.                         if (current_position_row + position_row >= 0
  50.                                 && current_position_row + position_row < gridRows
  51.                                 &&  current_position_column + position_column >= 0
  52.                                 && current_position_column < gridColumns
  53.                                 && compareStrings(words[start_counting], grid[current_position_row + position_row]
  54.                                         [current_position_column + position_column]))
  55.                         {
  56.                                 num_steps += searchForRoutes(words, grid, num_of_words, start_counting + 1,
  57.                                         current_position_row + position_row, current_position_column + position_column,
  58.                                         gridRows, gridColumns);
  59.                         }
  60.                 }
  61.         }
  62.         return num_steps;
  63. }
  64. int countReads(char grid[30][30][101], int gridRows, int gridColumns, char sentence[90901])
  65. {
  66.         char words[400][200];
  67.         int num_of_words, start_counting = 1, num_of_paths = 0;
  68.         getStartAndEndOfAWord(sentence, words, num_of_words);
  69.         for (int current_position_row = 0; current_position_row < gridRows; current_position_row++)
  70.         {
  71.                 for (int current_position_column = 0; current_position_column < gridColumns; current_position_column++)
  72.                 {
  73.                         if (compareStrings(words[0], grid[current_position_row][current_position_column]))
  74.                         {
  75.                                 num_of_paths += searchForRoutes(words, grid, num_of_words, start_counting,
  76.                                         current_position_row, current_position_column, gridRows, gridColumns);
  77.                         }
  78.                 }
  79.         }
  80.         return num_of_paths;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement