C++编个小小的程序,大侠们别说不会啊!

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:28:07
输入一个数列,然后输出所有排列。比如输入1,2,3
输出1,2,3
2,1,3
3,2,1
2,3,1
1,3,2
3,1,2
3,1,2
刚刚问题说得不是很明确。1、数组是自己输入的。2、用递归。

新写的代码,用了递归,输入用的是参数表。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

static void arrange(char *s, int start, int end);

int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: ./allrange <string>\n");
exit(EXIT_FAILURE);
}

arrange(argv[1], 0, strlen(argv[1]));

exit(EXIT_SUCCESS);
}

static void arrange(char *s, int start, int end)
{
int i;
char tmp;

if (start == end) {
printf("%s\n", s);
} else {
for (i = start; i < end; i++) {
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
arrange(s, start + 1, end);
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
}
}
}

这个题目是需要考虑输入 1,1,2 的情况,如果这样,输出的应该是<