Zyava
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору #include <stdio.h> #include <string.h> #define MAXRESULTS 1000 class ParenthesisesResultsContainer { public: char **Results; int ResultsCount; ParenthesisesResultsContainer() { ResultsCount = 0; Results = new char [MAXRESULTS]; } int Append(char *new_result, int new_result_length) { int fl = 0; for (i = 0; i < ResultsCount; i++) { if (strcmp(Results[i], new_result) == 0) { fl = 1; break; } } if (fl == 0) { Results[ResultsCount] = new char[new_result_length]; strcpy( Results[ResultsCount], new_result); ResultsCount++; return 1; } return 0; } } void RecursiveParenthesisesSearch(int count, ParenthesisesResultsContainer *result, char *current_result, int current_result_length) { char temp = new char[current_result_length + 2]; if (count > 0) { sprintf("()%s", current_result); if (result.Append(temp)) { RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2); } sprintf("%s()", current_result); if (result.Append(temp)) { RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2); } sprintf("(%s)", current_result); if (result.Append(temp)) { RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2); } } } void main() { ParenthesisesResultsContainer result; int n; printf("Enter n:"); scanf("%d", &n); if (n % 2 == 1) { printf("\nNo correct variants"); } else { RecursiveParenthesisesSearch(n / 2, &result, "", 0); printf("\nCorrect variants;\n"); for (int i = 0; i < result.ResultsCount; i++) { printf("%s\n", result.Results[i]); } } } | Всего записей: 324 | Зарегистр. 04-05-2006 | Отправлено: 15:29 08-07-2008 | Исправлено: Zyava, 15:32 08-07-2008 |
|