任意一个字符串的全排列算法(可以有重复的字符)
来源:互联网 发布:网络前景 编辑:程序博客网 时间:2024/05/16 18:52
////////////////////////////////////////////////////////
// 姓名:梁迅
// 学号:02d470
// 完成时间:10/8/2002
// 文件名:1.cpp
/////////////////////////////////////////////////////////
#define N 21
#include <stdio.h>
#include <string.h>
// 声明。
char d[N];
void Permutation(char s[], int i, int l);
void Sort(char s[]);
int count = 0;
void main()
{
char s[N];
// 输入源字符串。
printf("请输入一个不超过20个字符的字符串:");
gets(s);
// 排序,排列并输出。
Sort(s);
Permutation(s, 0, strlen(s));
}
// 运用递归输出各种排列。
void Permutation(char s[], int i, int n)
{
int j;
char temp;
for(j = 0; j < n; j ++)
if(s[j] == s[j - 1])
;
else if(s[j] != '#')// 如果标志为不为'#',
{
d[i] = s[j];// 把源串的一个字符赋给目的串。
temp = s[j];
s[j] = '#';
if(i == n - 1)
{
d[n] = '/0';
printf("%d:", ++ count); // 打印出其结果。
puts(d);
}
else Permutation(s, i + 1, n);// 递归调用。
s[j] = temp;// 回溯。
}
}
// 排序。
void Sort(char s[])
{
int n = strlen(s);
int i, j;
char temp;
for(i = 0; i < n - 1; i ++)
for(j = i + 1; j < n; j ++)
if(s[i] > s[j])
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
- 任意一个字符串的全排列算法(可以有重复的字符)
- 字符串算法——有重复字符的数组或字符串全排列(Permutations II)
- 含重复字符的字符串全排列算法(思路+分析)
- 字符串的排列(全排列,包含重复的字符)
- 递归解决输出一个字符串的全排列问题(缺陷:没有考虑字符串中字符重复的问题)
- 已知一个有重复字符的字符串,打印其所有不同的字符排列
- 字符串全排列算法--去除重复的排列
- 采用递归算法实现任意字符的全排列问题
- 字符串的全排列问题(一)——无重复出现字符的排列
- 对输入的字符串按字典顺序输出所有的全排列,字符串可以由重复字符
- 重复字符串的全排列
- 一个很好的字符串全排列算法
- 有重复字符的排列
- 求有重复数字的全排列算法。
- 【基础算法】有重复元素的全排列问题
- 算法 - 输出一个字符串的全排列(C++)
- 字符串的“无重复”全排列递归算法
- 含重复字符的字符串的全排列问题(Java)
- Java、XML与数据库编程实践(二)
- Java、XML与数据库编程实践(三)
- Java、XML与数据库编程实践(四)
- What is a Lightweight Methodology? 什么是轻量级方法?(英汉对照)
- 一个“老”程序员的技术及非技术个人回顾
- 任意一个字符串的全排列算法(可以有重复的字符)
- MSComm编程的一个误解
- JSP语法格式
- UNIX系统下informix自制开发工具构思介绍
- 动态SQL中DESCRIPTOR的应用
- 完善Borland C++ Builder可视化控件功能三例
- AIX仿真SCO UNIX的MENU驱动(1)
- AIX仿真SCO UNIX的MENU驱动(2)
- (转)NGN发展应用的展望:下一代网络