问题描述:
他递给你一个字符串,问你是否可以用它的字符创造尽可能多的不同的单词.
兴奋地想要试一试,你就得工作.这感觉有点像是解决了一个难题,并找到了新的方法来排列字母. 每一次的编排都透露了一个有趣的新词.你Eager 地投入到这项任务中,准备发现所有不同的单词 你可以用这些给定的字母来创造.
输入约束:
1 <= n <= 8
输入:唯一的输入行有一个长度为
n
的字符串.每个字符都在"a-z"之间.输出:首先打印一个整数
k
:字符串的个数. 然后打印k
行:按字母顺序打印字符串.
这是我的代码,想问问如何修改,以获得所需的输出按字母顺序.时间限制为1秒.
#include <stdio.h>
#include <string.h>
#include "quick_sort.h"
#include "swap.h"
void permutations(char array[], short length, short left)
{
if (left == length)
{
//swap(&array[left - 1], &array[i]);
printf("%s", array);
}
else
{
for (int i = left; i <= length; i++)
{
int is_duplicate = 0;
for (int j = left; j < i; j++)
{
if (array[j] == array[i])
{
is_duplicate = 1;
break;
}
}
if (!is_duplicate)
{
swap(&array[left], &array[i]);
permutations(array, length, left + 1);
swap(&array[left], &array[i]);
}
}
}
}
void main(void)
{
char input[10] = "";
fgets(input, 9, stdin);
short str_len = strlen(input);
//printf("%hd", str_len);
quicksort(input, str_len - 1);
//fputs(input, stdout);
permutations(input, str_len - 2, 0);
/*quicksort(input, str_len);*/
}