题目:全字母排序问题,输入n,对ABC进行全排序,并输出全排序数.
例:输入3时,显示AAA,AAB,AAC,ABA,ABB,ABC,BAA....27个
这里其实可以理解为三进制,000,001,002,010,011,012,020.....然后0=A,1=B,2=C.
代码一:循环,并用ASCII码,这里的局限性是需要知道输入的N是多少
代码二:递归解
#include <iostream>
using namespace std;
int main()
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
for (int k = 0; k < 3; k++)
for (int h = 0; h < 3; h++)
{
cout << char(i + 'A') << char(j + 'A') << char(k + 'A') << char(h + 'A') << endl;
}
int i;
cin >> i;
return 0;
}
#include <stdio.h>
int sum = 0;
void dfs(int n, int pos, char str[])
{
if (pos >= n)
{
str[n] = '\0';
sum++;
printf("%s\n", str);
return;
}
str[pos] = 'A';
dfs(n, pos + 1, str);
str[pos] = 'B';
dfs(n, pos + 1, str);
str[pos] = 'C';
dfs(n, pos + 1, str);
}
int main()
{
int n;
char str[12];
scanf("%d", &n);
dfs(n, 0, str);
printf("%d\n", sum);
return 0;
}