当前位置: 首页 > 编程笔记 >

C语言实现输入一个字符串后打印出该字符串中字符的所有排列

龙弘盛
2023-03-14
本文向大家介绍C语言实现输入一个字符串后打印出该字符串中字符的所有排列,包括了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,属于数学里的排列问题。是一个很实用的算法技巧。分享给大家供大家参考。具体实现方法如下:

例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

C语言实现代码如下:

/* 
* Copyright (c) 2011 alexingcool. All Rights Reserved. 
*/ 
#include <iostream>
#include <algorithm>

using namespace std;

char array[] = {'a', 'b', 'c'};
const int size = sizeof array / sizeof *array;

void Perm(char *array, int pos, int last) 
{ 
 if (pos == last) {
 copy(array, array + size, ostream_iterator<char>(cout, ""));
 cout << endl;
 } 
 else { 
 for(int i = pos; i <= last; i++) { 
  swap(array[i], array[pos]); 
  Perm(array, pos + 1, last); 
  swap(array[i], array[pos]); 
 } 
 }
}

void main()
{
 Perm(array, 0, 2);
}

希望本文所述实例对大家C程序算法设计的学习有所帮助。

 类似资料:
  • 本文向大家介绍打印给定字符串的所有排列,包括了打印给定字符串的所有排列的使用技巧和注意事项,需要的朋友参考一下 打印给定字符串的所有排列是回溯问题的一个示例。我们将减小子字符串的大小以解决子问题,然后再次回溯以从该部分获得另一个排列。 例如,如果字符串是ABC,则所有排列将是ABC,ACB,BAC,BCA,CAB,CBA。 该算法的复杂度为O(n!)。这是一个巨大的复杂性。当字符串大小增加时,需要

  • 问题内容: 我正在尝试查找“ |”的所有出现 在一个字符串中。 但我得到一个错误: 问题答案: 功能: 将返回的索引列表中的出现。

  • 《 C++ cout.put()》一节中,讲解了 ostream 类提供的 put() 成员方法的用法,其用于向输出流缓冲区中添加要输出的单个字符。而在某些场景中,我们还需要输出指定的字符串,这时可以使用 ostream 类提供的 write() 成员方法。 write() 成员方法专用于向输出流缓冲区中添加指定的字符串,初学者可以简单的理解为输出指定的字符串。其语法格式如下: ostream&w

  • 主要内容:字符串结束标志(划重点),字符串长度用来存放字符的数组称为 字符数组,例如: 字符数组实际上是一系列字符的集合,也就是 字符串(String)。在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。 C语言规定,可以将字符串直接赋值给字符数组,例如: 数组第 0 个元素为 ,第 1 个元素为 ,第 2 个元素为 ,后面的元素以此类推。 为了方便,你也可以不指定数组长度,从而写作: 给字符数组赋

  • 问题内容: 在我的应用程序中,我将附加一个字符串以创建路径以生成URL。现在,我想在按“后退”按钮时删除该附加字符串。 假设这是字符串: 现在我想要一个这样的字符串: 我怎样才能做到这一点? 问题答案: 您可以使用相同的方法

  • 问题内容: 我需要解析一个HTML文档并查找其中所有出现的字符串。 我目前将HTML加载到字符串变量中。我只需要字符位置,这样我就可以遍历列表以在字符串之后返回一些数据。 该函数仅返回第 一个 匹配项。如何 全部 归还呢? 问题答案: 在不使用正则表达式的情况下,类似这样的方法应该可以返回字符串位置: