| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:这题用递归怎么做
只看楼主 加入收藏
xzdblue
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-25
收藏
 问题点数:0 回复次数:4 
这题用递归怎么做

输入N个不同的字符,输出所有N个字符的全排列

搜索更多相关主题的帖子: 递归 
2007-02-06 16:47
xzdblue
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-25
收藏
得分:0 
谁告诉我下思路啊`
我完全没有思路啊

谢谢了先
2007-02-06 18:17
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
全排列的概念有点忘了,解释一下

2007-02-07 08:40
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
给点提示
void cha(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 cha(char str[],int m);
if (m<n) /* 定 义 递 归 调 用 出 口 */
{
for (k=0;k<=m;k++)
{
pai(str,m+1,n); /*递归调用*/
cha(str,m); /*调用左移函数*/
}
}
else printf("%s\t",str);
}
#include "stdio.h"
main()
{char str[]="ABCD"; /*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/
clrscr();
pai(str,0,4); /*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/
getch();
}
找到这样一个规律如下:
┏ ABCD
┣ BCDA
┏ ABCD ━┫
┃ ┣ CDAB
┏ ABCD ━╋ BCAD ┗ DABC
┃ ┃ .
┃ ┗ CABD .
ABCD ━┫ .
┃ ┏ BACD .
┃ ┃ .
┗ BACD ━╋ ACBD ┏ CBAD
┃ ┣ BADC
┗ CBAD ━┫
┣ ADCB
┗ DCBA
简化图如下所示 ==>
┏ ABCD
┣ BCDA
┏ ABC ━┫
┃ ┣ CDAB
┏ AB ━╋ BCA ┗ DABC
┃ ┃ .
┃ ┗ CAB .
A ━┫ .
┃ ┏ BAC .
┃ ┃ .
┗ BA ━╋ ACB ┏ CBAD
┃ ┣ BADC
┗ CBA ━┫
┣ ADCB
┗ DCBA


自强不息:)
2007-02-07 08:58
xzdblue
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-25
收藏
得分:0 
谢谢 还在理解完毕
2007-02-07 11:17
快速回复:这题用递归怎么做
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031299 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved