输出一个string的所有排列情况
问题:
1.加入输入是{a,b,c};
2.输出abc,acb,bac,bca,cab,cba;
代码描述:
1.递归遍历所有情况
2.方法FUN输入为:要排列的字符串char inp[];inp[]的长度len;排列后结果存入ret[];
#include<stdlib.h>
#include<stdio.h>
#include<string.h> //count the number of elements in inp[] without '0';
int count(char inp[],int len){
int i=;int sum=;
for(;i<len;i++){
if(inp[i]!=) sum++;
}
return sum;
} //输出所有可能的排列
int FUN(char inp[],int len,char ret[])
{//len is the number of elements in inp[];
if(count(ret,len)==len){
printf("------------%s\n",ret);//when ret is full,print;
}
int i=;
for(;i<len;i++){
if(inp[i]==) continue;//the element printed before had changed to '0';
ret[count(ret,len)]=inp[i];//put inp[i] into the tail of ret
char tmp=inp[i];//change the element printed to 0 :protect the scene;
inp[i]=;
FUN(inp,len,ret);
inp[i]=tmp;
ret[count(ret,len)-]=;
}
return ;
} int main()
{ char input[]={'a','b','c','d','e',};
char result[]={};//save the sort result of input
FUN(input,,result);
return ;
}
xu@xu-ThinkPad-X61:~/algorithm$ gcc bianli.c
xu@xu-ThinkPad-X61:~/algorithm$ ./a.out
------------abcde
------------abced
------------abdce
------------abdec
------------abecd
------------abedc
------------acbde
------------acbed
------------acdbe
------------acdeb
------------acebd
------------acedb
------------adbce
------------adbec
------------adcbe
------------adceb
------------adebc
------------adecb
------------aebcd
------------aebdc
------------aecbd
------------aecdb
------------aedbc
------------aedcb
------------bacde
------------baced
------------badce
------------badec
------------baecd
------------baedc
------------bcade
------------bcaed
------------bcdae
------------bcdea
------------bcead
------------bceda
------------bdace
------------bdaec
------------bdcae
------------bdcea
------------bdeac
------------bdeca
------------beacd
------------beadc
------------becad
------------becda
------------bedac
------------bedca
------------cabde
------------cabed
------------cadbe
------------cadeb
------------caebd
------------caedb
------------cbade
------------cbaed
------------cbdae
------------cbdea
------------cbead
------------cbeda
------------cdabe
------------cdaeb
------------cdbae
------------cdbea
------------cdeab
------------cdeba
------------ceabd
------------ceadb
------------cebad
------------cebda
------------cedab
------------cedba
------------dabce
------------dabec
------------dacbe
------------daceb
------------daebc
------------daecb
------------dbace
------------dbaec
------------dbcae
------------dbcea
------------dbeac
------------dbeca
------------dcabe
------------dcaeb
------------dcbae
------------dcbea
------------dceab
------------dceba
------------deabc
------------deacb
------------debac
------------debca
------------decab
------------decba
------------eabcd
------------eabdc
------------eacbd
------------eacdb
------------eadbc
------------eadcb
------------ebacd
------------ebadc
------------ebcad
------------ebcda
------------ebdac
------------ebdca
------------ecabd
------------ecadb
------------ecbad
------------ecbda
------------ecdab
------------ecdba
------------edabc
------------edacb
------------edbac
------------edbca
------------edcab
------------edcba
sorry,有点点长!
输出一个string的所有排列情况的更多相关文章
- 合并vector里的内容,输出一个string
string merge_vector(vector<string> dp_scpe_all) { //合并vector里的内容 string new_dp_scpe; ; m < ...
- 关于如何来构造一个String类
今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...
- xss实例-输出在<script></script>之间的情况
1. 我们找到这么一个点,也是输入和输出都未过滤的一个点.相比教程第一例,其特殊之处在于,是输出在了 <script>[输出]</script>之间. http://activ ...
- Java中直接输出一个类的对象
例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...
- VB6之多维数组中元素在内存中的排列情况
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal ...
- 算法:输出一个整数(不用ToString方法)
1.递归实现 static void Main(string[] args) { Console.WriteLine("Pls input a number:"); int p = ...
- 算法题 -- 输入一个Long数组,按要求输出一个等长的Long数组
/** * 输入一个Long数组,按要求输出一个等长的Long数组 * 输出数组的元素值等于,输入数组除相同下标外其他元素的积 * 如:输入[1, 2, 3, 4], 输出[24, 12, 8, 6] ...
- 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM
题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...
- 螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
package Day8_06; /*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右.下.左.上螺旋填入的结果. * 例如读入数字4,5,则输出结果为: * 1 2 ...
随机推荐
- bash shell:重定向标准错误输出
如何重定向标准错误输出到标准输出?如何把标准错误输出输出到一个文件? Bash提供了I/O重定向工具,有3个缺省的文件(标准输出流): stdin - 用来获取输入,比如键盘.文件重定向 stdout ...
- SSAS系列——【03】多维数据(多维数据集对象)
原文:SSAS系列--[03]多维数据(多维数据集对象) 1.什么是Cube? 简单 Cube 对象由基本信息.维度和度量值组组成. 基本信息包括多维数据集的名称.多维数据集的默认度量值.数据源和存储 ...
- Node.js与MongoDB的基本连接示例
Node.js与MongoDB的基本连接示例 前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务 ...
- MVC验证07-自定义Model级别验证
原文:MVC验证07-自定义Model级别验证 在一般的自定义验证特性中,我们通过继承ValidationAttribute,实现IClientValidatable,只能完成对某个属性的自定义验证. ...
- MySQL 存储过程 经常使用语法
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
- high performance program (SSE4.2 intrin instruction)
In file included from mm_lddqu.si128.c:2:0: /usr/local/lib/gcc/x86_64-redhat-linux/4.7.1/include/nmm ...
- OpenGL+VS2013+WIN7(64)组态
1.下载windows在下面glut安装文件:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 2. 拆开发现五个文件 ...
- 深入浅出SQL Server 2008 分区函数和分区表
原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...
- AJAX入门——工作原理
同步和异步交互,了解互动 对于一个样本:一般B/S模式(同步) AJAX技术(异步) * 同步: 提交请求->等待server处理->处理完成返回 ...
- Add GUI to connect to SQL
(*********************************************************************************) (* *) (* Below i ...