Генерация с помощью комбинаций массива определенной длины из элементов с типом массив символов?

Добрый день!
Для исследования эффективности алгоритма в худшем случае, мне нужно предварительно сгенерировать слова в определенной последовательности: от "zzzz" до "aaaa", в зависимости от требуемого количества слов.
Сейчас это генерируется так:
int count_words = 200000;
char** words = malloc(count_words * sizeof(char*));
// Generate words in worst-case
int index = 0;
for (int a = 0; a < 'z' - 'a'; a++) {
	for (int b = 0; b < 'z' - 'a'; b++) {
		for (int c = 0; c < 'z' - 'a'; c++) {
			for (int d = 0; d < 'z' - 'a'; d++) {
				if (index < 200000) {
					words[index] = malloc(5 * sizeof(char));
					words[index][0] = 'z' - a;
					words[index][1] = 'z' - b;
					words[index][2] = 'z' - c;
					words[index][3] = 'z' - d;
					words[index][4] = '\000';
					index++;
				}
			}
		}
	}
}


А требуется примерно так:
int count_words = 200000;
char** words = malloc(count_words * sizeof(char*));
// Generate words in worst-case
for (int i = 0; i < count_words; i++) {
	words[i] = calloc(STR_LEN + 1, sizeof(char));
	for (int k = 0; k < STR_LEN; k++) {
		words[i][k] = 'z' - SOME_ARITHMETICS;
	}
	words[STR_LEN] = '\000';
}


Заранее спасибо!
  • Вопрос задан
  • 2916 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Можно так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы