全排列(蓝桥杯)

    递归实现

#include
#include
void allrange(char* str,int l,int r);
void swap(char* x,char* y);
int isswap(char* str,int l,int i);

int main()
{
	char str[10]="1223";
	allrange(str,0,strlen(str)-1);
	return 0;
}
void allrange(char* str,int l,int r)
{
	int i;
	if(l==r)
	{
		printf("%s\n",str);
		return;
	}
	for(i=l;i<=r;i++)
	{
		if(isswap(str,l,i))
		{
			swap(&str[l],&str[i]);
			allrange(str,l+1,r);
			swap(&str[l],&str[i]);
		}
	}
}
void swap(char* x,char* y)
{
	char t;
	t=*x;
	*x=*y;
	*y=t;
}
int isswap(char* str,int l,int i)
{
	int k;
	for(k=l;k

 

你可能感兴趣的:(蓝桥杯)