博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题28:字符串的排列
阅读量:5894 次
发布时间:2019-06-19

本文共 702 字,大约阅读时间需要 2 分钟。

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。

这是一个典型的递归问题,考虑如何将复杂问题分解成简单问题,最后通过递归解决。我们肯定有这样的经验,自己在写abc的全排列的时候,肯定会想首先确定第一个字符,然后考虑后面有什么排列,比如确定第一个字符为a,那么剩下的b和c有两种排列,分别是bc和cb,那么以a开头的字符串有abc,acb这两种排列。这就是我们下面程序所需要用到的解题思路。

  1. 将字符串排列分解为字符串的第一个字符以及其后的剩余字符。剩余字符串又可以按照前面的思路来解决,分解为第一个字符和剩余字符串。当最后只有一个字符的时候,程序就到达出口,这个时候输出字符串,就是其中的一个排列。
  2. 字符串abc,那么可能出现在第一个字符的可能性有三种,我们只需要每次交互第一个字符,然后计算剩余字符串的排列即可。采用递归思路解决问题。

代码实例:

View Code
#include
#include
using namespace std;//交换元素值void Swap(char &a,char &b){ char temp; temp=a; a=b; b=temp;}//全排列函数void Permutation(char string[],int start,int end){ if(start==end) { cout<
<

 

 

转载地址:http://zzisx.baihongyu.com/

你可能感兴趣的文章
MySQL从库记录binlog日志出错一例
查看>>
2015年度扯淡
查看>>
phpcms2008列表页模板与内容页模板list.html show.html
查看>>
Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
查看>>
GNS3全面详解系列-GNS3的前世今生
查看>>
JDK 1.8.0_144 集合框架之CopyOnWriteArrayList
查看>>
linux 将大文件分成小文件
查看>>
CCNA- 距离矢量路由协议学习
查看>>
jira 配置 LDAP 访问
查看>>
Canonical发布Ubuntu server 11.10版本
查看>>
企业实践用户邮箱导入/导出(第2部分)
查看>>
我的友情链接
查看>>
nagios搭建(五):nagios监控mysql
查看>>
AIX ftp 530 User root access denied
查看>>
【Java记录】try-with-resources的一个坑
查看>>
如何学习Linux命令-初级篇
查看>>
从Oracle Public Yum为Oracle Linux建立本地的Yum源
查看>>
Android开发——09Google I/O之让Android UI性能更高效(1)
查看>>
在 SELECT 查询中使用表表达式
查看>>
(二) php if语句,switch语句,continue语句,return语句,for 、while、do while 循环
查看>>