我的教授让我们写了一个char
队列(没有模板,只有char),我这样做没有太多麻烦。现在,我用它编写了一个驱动程序(main()),它将打印出序列ABC的每种组合。
字符串必须按以下顺序生成:
A
B
C
AA
AB
AC
BA
BB
BC
CA
CB
CC
AAA
AAB
AAC
ABA
ABB
ABC
ACA
ACB
ACC
etc.
MAX_SIZE = 10用于队列,因此应该在大约25个字符串后引发溢出异常。
这是提示:
Start with A and B and C in the queue.
“Remove it Display it then Add Add Add ”
哪一种有意义,但我不知道如何每次都知道如何使主控制结构转换一个字符长度(就像一旦它把所有单个字符都移动到两倍,再到三倍,等等)。
最佳答案
这是一个解决方案。很简单。
Queue q;
q.enqueue('A');
q.enqueue('\n');
q.enqueue('B');
q.enqueue('\n');
q.enqueue('C');
q.enqueue('\n');
for (size_t i = 0; i < 25; ++i) {
size_t len = 0;
char str[256];
char c;
while ((c = q.dequeue()) != '\n')
str[len++] = c;
str[len] = '\0';
std::cout << str << std::endl;
for (size_t j = 0; j < len; ++j)
q.enqueue(str[j]);
q.enqueue('A');
q.enqueue('\n');
for (size_t j = 0; j < len; ++j)
q.enqueue(str[j]);
q.enqueue('B');
q.enqueue('\n');
for (size_t j = 0; j < len; ++j)
q.enqueue(str[j]);
q.enqueue('C');
q.enqueue('\n');
}