社区
C++ 语言
帖子详情
微软经典面试题
bastenf
2006-09-04 09:55:36
题目:给出一个函数来输出一个字符串的所有排列
想问 除了嵌套N循环的做法外,有没有其他好的办法?
...全文
4055
33
打赏
收藏
微软经典面试题
题目:给出一个函数来输出一个字符串的所有排列 想问 除了嵌套N循环的做法外,有没有其他好的办法?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tame1983
2006-09-22
打赏
举报
回复
用递归方法写了一个小函数,好像还成
//用递归方法给出一个整数数组的所有排列。
void Permutation(int intLength,int intArray[],int intResult[][5])
{
//首先定义递规的出口,就是长度为2的时候,是递规的出口。
if (intLength == 2)
{
//到了最后两个数据的排列了。
intResult[0][0] = intArray[0];
intResult[0][1] = intArray[1];
intResult[1][0] = intArray[1];
intResult[1][1] = intArray[0];
}
else
{
//构造下一次递规调用的数组。
int intArrayTmp[100];
for (int i = 0 ; i < intLength ; i++)
{
intArrayTmp[i] = intArray[i+1];
}
//先求出后N-1个元素的排列结果
Permutation(intLength-1,intArrayTmp,intResult);
//求出N-1个元素的排列结果后求N个元素的排列结果。
int intPlus = GetFactorial(intLength-1); //求出前N-1的排列个数
for (int i = 1 ; i < intLength ; i++)
{
for (int j = 0 ; j < intLength-1 ; j++)
{
for(int k = 0 ; k < intPlus ; k++)
{
intResult[i*intPlus+k][j] = intResult[0+k][j];
}
}
}
//对头号元素进行按照位置的插入工作。每intPlus行对应一个插入的位置,共对应N个位置。
for (int i = 0 ; i < intLength ; i++) //i表示要插入的位置.
{
for (int j = 0 ; j < intPlus ;j++) //i*intPlus + j 表示要操作的行
{
//首先移动数据.
for (int k = intLength-1 ; k > i ; k--) //k表示现在有多少列。
{
intResult[i*intPlus + j ][k] = intResult[i*intPlus + j ][k-1];
}
//然后插入应该插入数据
intResult[i*intPlus + j ][i] = intArray[0];
}
}
}
}
a_tongm
2006-09-05
打赏
举报
回复
王晓东的那本算法书上有这个问题的讲解和代码,看一下吧
bineon
2006-09-05
打赏
举报
回复
http://www.cs.cityu.edu.hk/~luoyan/mirror/tsinghua/combinemaths/1/1_5.htm
bistar
2006-09-05
打赏
举报
回复
学习学习
做鸡真好吃
2006-09-05
打赏
举报
回复
大家给个算法名,让俺也能研究以下啊~
kangjian1
2006-09-05
打赏
举报
回复
Sorry. my wrong!
TMD can't input chinese!!
kangjian1
2006-09-05
打赏
举报
回复
I don't think it is so complex as you said!!
I think 20 lines is enough, like this:
#include <stdio.h>
#include <string.h>
#define swap(a,b){ char temp=a; a=b; b=temp; }
int main()
{
char str[]="12345";
int len = strlen(str);
int i,j;
for(j=0;j<len;j++)
for(i=0;i<len-1;i++)
{
swap(str[i],str[i+1]);
printf("%s\n",str);
}
return 0;
}
__________________
2006-09-05
打赏
举报
回复
我当时写个字典生成器玩玩。用的是递归。
picklock
2006-09-05
打赏
举报
回复
关注
liglow
2006-09-05
打赏
举报
回复
可能是我误解了题目,可是我感觉是二重循环啊,有什么难的吗?
winbondowen
2006-09-04
打赏
举报
回复
曾经在C++算法上看到过
不过现在忘记了
是用递归做的
10行代码以内吧
herman~~
2006-09-04
打赏
举报
回复
关注
qdhuxp
2006-09-04
打赏
举报
回复
gz
Bennyatt
2006-09-04
打赏
举报
回复
似乎只有穷举法
穷举还得做的有水准要能处理未知长度种类的串....
有空的话咱们大家都写几个切磋一下
bastenf
2006-09-04
打赏
举报
回复
能不能给个具体点的说明啊!!!这样太笼统了啊!!
IT有个圈儿
2006-09-04
打赏
举报
回复
关注!
AdenPlus
2006-09-04
打赏
举报
回复
递归和回溯应该都可以啊!
格兰特杨
2006-09-04
打赏
举报
回复
关注
healer_kx
2006-09-04
打赏
举报
回复
搜索回溯(我不太会)
xiaosong8584
2006-09-04
打赏
举报
回复
用 求九宫的递归算法 ,
可以实现按照字符串长度的全排列,
时间复杂度是n!
加载更多回复(13)
华为
微软
等公司
面试题
华为
微软
经典
面试
微软
谷歌腾讯的
经典
面试题
.doc
微软
谷歌腾讯的
经典
面试题
.doc
微软
的
面试题
及答案-超变态但是很
经典
.rar
找工作,笔试时一定要准备的
经典
智力题,很推荐!
智力测试.rar
经典
智力趣题
科学怪题怎样拍死苍蝇,做出来40,智商就120以上了,你敢挑战么? 世界500强公司
面试题
世界上最
经典
的数学智力题 智力测试的三种题型 基础数学智力题
经典
智力趣题 推理能力测试 逻辑数学智力题 面试官询问的刁钻问题
面试题
集锦
微软
经典
面试题
(附答案)
微软
面试智力题(附答案) 应聘笔试题(考察你的数学分析推理能力) Google的
面试题
集
BAT谷歌
微软
等各IT公司互联网C++ JAVA 计算机笔试面试真题复习资料108个文档合集.zip
BAT谷歌
微软
等各IT公司互联网C++ JAVA 计算机笔试面试真题复习资料108个文档合集 C++基础
面试题
.docx C++开发工程师
面试题
库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案.docx c++笔试题汇总.pdf C++
经典
面试题
库 附带参考答案.docx C++语言程序设计试题.docx C++
面试题
笔试题 CC++面试问题分类大汇总.docx C语言 gamesloft C++
面试题
目.docx Google笔试面试 IQ智力
面试题
笔试题 JAVA笔试面试资料 NET
面试题
笔试题 web开发 中兴资料
微软
笔试面试 数据库
面试题
笔试题 百度笔试面试 算法 数据结构 网易搜狐新浪笔试面试 腾讯笔试面试 计算机基础 计算机网络 软件测试 阿里巴巴笔试面试
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章