帮忙解一道计算机奥赛题

来源:百度知道 编辑:UC知道 时间:2024/05/17 22:22:25
输入一串字符,判断由该串中改变字符顺序所行成的所有格式.比如,输入字符串"aaac",则改变其中单个字符的顺序可形成"aaca","acaa","caaa".现要求对N=4的情形编写程序实现上述功能并按字典顺序输出.
那位七级的朋友,您的程序并不能实现题目的功能要求.比如当输入四个不同字符时,只打印22个(24个才对).不过那个递归算法还是挺有意思的.

用C语言描述

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

int main()
{
int i,j;
char temp[4];
printf("Please input a string:\n");
scanf("%s",temp);#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void invert(char s[], int n);
void permutation(char per[], int m, int len);
void reverse(char temp[]);

int main()
{
int i,j;
char temp[4];
printf("Please input a string:\n");
scanf("%s",temp);
invert(temp,4);
reverse(temp);
permutation(temp,0,4);
system("pause");
return 0;
}

void invert(char s[], int n)
{
char temp;
if(n>1)
{
invert(s+1,n-2);
temp = s[0];
s[0] = s[n-1];
s[n-1] = temp;
}
}

void permutation(char per[], int m, int len)
{
int i;
char tmp;
if (m