Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345438
  • 博文数量: 88
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-21 14:50
文章分类

全部博文(88)

文章存档

2010年(88)

我的朋友

分类: C/C++

2010-09-21 16:22:45

/*
 * Description:
 *          字符串全排列
 * Author  :FinL
 * Language: C
 * Date    : 2010-09-20
 */

#include
using namespace std;

/*注意,输入字符串的时候不中间不要留空格。*/
/*思想还是递归。对于abc这样的字符串来说,分别让a,b,c各出现在start位置一次,然后递归求后面的组合*/
void Permutation(char *src,char *start)
{
if(NULL==src||NULL==start)
return;

if(0==*start)
cout<
        for(char *p=start;*p!=0;p++)
{
if(p!=start)
{
char tmp=*start;
*start=*p;
*p=tmp;
}
Permutation(src,start+1);
if(p!=start)
{
char tmp=*start;
*start=*p;
*p=tmp;
}
}
}

int main()
{
char *src=NULL,*p;

src=(char*)malloc(20*sizeof(char));
p=src;
cin>>src;
if(NULL==src)
{
cout<<"Memory allocation for src failed."<
return -1;
}
Permutation(src,p);
return 0;
}
阅读(1090) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~