字符串全排列
2016-01-16 11:32
393 查看
void swap(char *a, char *b)
{
char c;
c = *a;
*a = *b;
*b = c;
}
void printf_str(char *str, char *p_begin)
{
char *p_tmp;
if (0 == *p_begin) {
printf("%s\r\n", str);
return;
} else {
for (p_tmp = p_begin; 0 != *p_tmp; p_tmp++) {
swap(p_begin, p_tmp);
printf_str(str, p_begin + 1);
swap(p_tmp, p_begin);
}
}
}
int main(void)
{
char str[] = "abc"; //不能用 char *
printf_str(str, str);
}
//方案2
void printf_str2(char *str, int begin, int end)
{
int i;
if (begin + 1 == end) {
printf("%s\r\n", str);
return;
} else {
for (i = begin; i < end; i++) {
swap(&str[begin], &str[i]);
printf_str2(str, begin+1,end);
swap(&str[i], &str[begin]);
}
}
}
int main()
{
char str[]= "abc";
printf_str2(str, 0, strlen(str));
return 0;
}
{
char c;
c = *a;
*a = *b;
*b = c;
}
void printf_str(char *str, char *p_begin)
{
char *p_tmp;
if (0 == *p_begin) {
printf("%s\r\n", str);
return;
} else {
for (p_tmp = p_begin; 0 != *p_tmp; p_tmp++) {
swap(p_begin, p_tmp);
printf_str(str, p_begin + 1);
swap(p_tmp, p_begin);
}
}
}
int main(void)
{
char str[] = "abc"; //不能用 char *
printf_str(str, str);
}
//方案2
void printf_str2(char *str, int begin, int end)
{
int i;
if (begin + 1 == end) {
printf("%s\r\n", str);
return;
} else {
for (i = begin; i < end; i++) {
swap(&str[begin], &str[i]);
printf_str2(str, begin+1,end);
swap(&str[i], &str[begin]);
}
}
}
int main()
{
char str[]= "abc";
printf_str2(str, 0, strlen(str));
return 0;
}
相关文章推荐
- 微信开放平台开发(1) 语义理解
- c++中char * 和 char []的区别-转
- 微信公众平台开发(110) 微信连Wi-Fi
- android项目总结之表单
- 微信公众平台开发(109) 个性化菜单
- 微信支付现金红包接口
- 微信自定义菜单扩容?
- 微信公众号新功能-原创声明、赞赏功能、评论管理、页面模版
- 微信连Wi-Fi专业设备列表
- 移动端前端UI库—Frozen UI、WeUI、SUI Mobile
- 微信“摇一摇·周边”正式开放
- 微信官方UI库—WeUI
- 微信支付开发(3) 对账单
- 微信公众平台开发问答
- 微信公众平台开发(106) 网页获取用户地理位置
- 微信自定义菜单生成器
- 微信朋友圈运营规则
- 微信公众平台开发(107) 分享到朋友圈和发送给好友
- 微信红包限额提升方法
- 微信支付开发(4) 动态链接Native支付