发布网友
共4个回答
热心网友
void chang(char str[],int m) /*定义循环左移函数(我没有用左移函数)*/
{
int i,j;
char temp=str[0];
for (i=0;i<m;i++) str[i]=str[i+1];
str[i]=temp;
}
void pai(char str[],int m,int n) /*定义全排列函数*/
{
int k;
void chang(char str[],int m);
if (m<n) /* 定 义 递 归 调 用 出 口 */
{
for (k=0;k<=m;k++)
{
pai(str,m+1,n); /*递归调用*/
chang(str,m); /*调用左移函数*/
}
}
else printf("%s\t",str);
}
#include "stdio.h"
main()
{char str[]="ABCD"; /*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/
clrscr();
pai(str,0,4); /*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/
getch();
}
热心网友
用双重循环嵌套就可以了!
热心网友
恩啊
一个基本的问题
一般的c语言上都有
热心网友
void
chang(char
str[],int
m)
/*定义循环左移函数(我没有用左移函数)*/
{
int
i,j;
char
temp=str[0];
for
(i=0;i<m;i++)
str[i]=str[i+1];
str[i]=temp;
}
void
pai(char
str[],int
m,int
n)
/*定义
全排列
函数*/
{
int
k;
void
chang(char
str[],int
m);
if
(m<n)
/*
定
义
递
归
调
用
出
口
*/
{
for
(k=0;k<=m;k++)
{
pai(str,m+1,n);
/*递归调用*/
chang(str,m);
/*调用左移函数*/
}
}
else
printf("%s\t",str);
}
#include
"stdio.h"
main()
{char
str[]="ABCD";
/*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/
clrscr();
pai(str,0,4);
/*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/
getch();
}