社区
数据结构与算法
帖子详情
请高手指教
lwbhero
2002-08-31 08:46:07
输入n个不同的字符并打印着n个字符的全部n!个排列
请各位高手给个算法(最好不要用第归)。
谢谢了!
...全文
22
5
打赏
收藏
请高手指教
输入n个不同的字符并打印着n个字符的全部n!个排列 请各位高手给个算法(最好不要用第归)。 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hequhecong
2002-09-01
打赏
举报
回复
Cybergate(Cybergate)
换汤不换药
真没劲
ddcat
2002-08-31
打赏
举报
回复
一般来说递归效率比较低。
可以用堆栈的方法模拟递归的过程,这样的效率应该是比较高的了。
lwbhero
2002-08-31
打赏
举报
回复
如果用pascal来实现呢?
请阐述一下算法,不用写源代码。
多谢了!
Wugifer
2002-08-31
打赏
举报
回复
#include <algorithm>
void main()
{
char array[] = "abcd"; //a、b、c、d是需要排序的字符
printf( "%s\n", array );
while( std ::next_permutation( array, array + strlen( array ) ) )
printf( "%s\n", array );
}
有现成的算法为什么不用呢?
Cybergate
2002-08-31
打赏
举报
回复
这个程序没有采用通常的回溯法,而运用了排列组合的知识
例如,我们把abc进行全排列,并对它们编号:
abc 0
acb 1
bac 2
bca 3
cab 4
cba 5
因此,只要设计一个算法,把编号转变成为相应的字符串就可以了。具体请看程序
#include <iostream.h>
#include <string.h>
void main()
{
const int size=10;
char s[size], b[size];
long f[size+1], i, j;
int l, k, m, n;
cout << "Enter string: "; cin >> s;
l=strlen(s);
for (f[0]=1, k=1; k<=l; k++) f[k]=f[k-1]*k; //计算阶乘
for (i=0; i<f[l]; i++) { // i 为编号
j=i;
strcpy(b,s);
for (k=l-1; k>=0; k--) {
cout << b[n=j/f[k]];
j-=n*f[k];
strcpy(b+n, b+n+1);
}
cout << endl;
}
}
自己学的对打小游戏
请
高手
指教
NULL 博文链接:https://java-xiu.iteye.com/blog/850664
自学遇到的问题截图,
请
高手
指教
学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图
dll调用时总是出错,
高手
指教
调用时总是出错,
高手
指教
。已经困扰一个多月了,崩溃啊
windows7使用答疑3000条[w7必备]
请
高手
指教
! 在windows XP下可以用U盘启动进PE windows7怎么就不行了?XP是用的USB-HDD windows7 找不到这个启动。 您说的这个与BIOS有关,与系统一点关系都没有。
请
您进入bios的启动设置中详细检查启动项的设置...
诚锋在线调查本
诚锋在线调查本使用说明: 1、非常实用好用的在线调查程序,您可把调查程序放在任一ASP页面上。 2、首页ASP程序的调查程序可放在您的任何ASP页面上,如果在执行时出现数据库链接出错, ...并
请
高手
指教
。谢谢!
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章