问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

在c++ 中如何对数组中的元素进行全排列?

发布网友 发布时间:2022-04-06 11:23

我来回答

1个回答

热心网友 时间:2022-04-06 12:52

用标准库algorithm中的next_permutation, 或prev_permutation:

#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
float fArray[] = {1.1, 2.2, 3.3, 4.4, 5.5};
float *Beg = fArray;
float *End = fArray + sizeof fArray / sizeof fArray[0];

do{
copy(Beg, End, ostream_iterator<float>(cout, " "));
cout << endl;
}while(next_permutation(Beg, End));
}

算法你去翻翻STL的源码不就可以了,而且这样的算法网上一搜遍地都是,这是我以前搜集的一个算法:

#include <iostream>
#include <algorithm>

template <class T>
void Print(T* tArray, int iSize)
{
for(int i = 0; i < iSize; ++i)
std::cout << tArray[i] << ' ';

std::cout << std::endl;
}

template <class T>
void Permutation(T* tArray, int iSize)
{
int* iTag = new int[iSize + 1];

for(int i = 0; i < iSize; ++i)
iTag[i] = iSize - i;

Print(tArray, iSize);

for(int i = iSize - 1; i > 0; )
{
--iTag[i];
--i;
int j = iSize - 1;
do
{
std::swap(tArray[j--], tArray[i++]);
}while(j > i);

Print(tArray, iSize);

i = iSize - 1;
for(; iTag[i] == 0; --i)
iTag[i] = iSize - i;
}

delete [] iTag;
}

int main()
{
int a[] = {1, 2, 3, 4};
Permutation(a, 4);

float b[] = {2.2, 4.4, 3.3};
Permutation(b, 3);

char c[] = "WIN";
Permutation(c, 3);
}
C语言怎么实现有重复元素的全排列?

从字符串第一位idx=0开始,每次递归都从s[idx]之后选择一个字符与s[idx]交换 因为可能有重复字符,可使用哈希数组标记当前循环每个字符是否被选择 因为字符范围不超过ASCII码,所以使用128空间的数组足够用来标记了 选择好当前字符s[i]并与s[idx]交换之后,递归调用继续排列下一位s[idx+1]注意这里要...

c语言中,如何输出一个数组的全排列!如a[3]={1,2,3} 要求输出1 2 3,1...

for(i = 0; i &lt; N; i++)printf(' %c ',a[i]);printf('\n');} void swap(int i, int offset){ int temp;temp = a[offset];a[offset] = a[i];a[i] = temp;}

c语言全排列

1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。即以3开头的和4...

...9的9个数放入这个数组,也求出所有可能。c语言实现。说一下思路或者...

如果我求得固定第10位后的排列,固定第9位后的排列就可以求出,固定第10位有1种可能,可以循环求得。这很明显是递归的算法。include &lt;stdio.h&gt; int n,a[10]; /*a[1],a[2],…,a[n]构成n个数的一个排列*/ long count=0; /*变量count记录不同排列的个数,这里用于控制换行*/ void pe...

求全排列的问题。abcde五个字母,列出所有的排列。这个应该怎么实现?

//这个仔细想了下,确实有点绕。用的是土办法。我已经测试过,程序执行没问题。代码你直接拷贝到main函数中执行。//定义数组 char [] char_arr = {'a','b','c','d','e'};for(int i=0;i&lt;char_arr.length;i++){ for(int j=0;j&lt;char_arr.length;j++){ if(j == i){ continu...

数学排列组合的算法、如图两个、有什么区别、求算法谢谢

3. 输出排列。组合算法:1. 从数组的第数开始往后取,取到指定数量的数时输出。2. 如果未取到指定数量的数,则从当前位置的下数开始递归取数,以此类推。3. 输出组合。区别:全排列算法会将所有的元素进行排列,包括元素的顺序;组合算法只是从一组数中取出一定数量的数,不考虑它们的顺序。

c# 如何将几个数字进行搭配相加,得出全排列组合

static int[] number;static int[] result;/// /// 应用程序的主入口点。/// [STAThread]static void Main(string[] args){ number = new int[] {2,3,4,6};result = new int[number.Length];Backtrace(0);System.Console.Read();} static void Backtrace(int i){ if (i &gt;= num...

全排列Heap算法全排列

函数perm用于实现Heap算法全排列,参数list为要排列的字符串,n表示字符串长度。在perm函数中,首先定义变量i为n,使用while循环输出字符串c。然后定义变量k,tmp,i为n,count数组用于记录当前排列位置的元素移动次数。使用do-while循环,当count[i-1]小于i时,执行内部if条件判断。内部if条件判断根据i的...

4个元素的全排列共有多少种

4个元素的全排列共有24种,栈要求符合后进先出,按此衡量排除后即得:1234√,1243√,1324√,1342√,1423×,1432√,2134√,2143√,2314√ ,2341√,2413×,2431√,3124×,3142×,3214√,3241√,3412×,3421√,4123×,4132×,4213×,4231×,4312×,4321√。14种可能,10种不...

谁能解释一下用递归做的排列算法的详细步骤?参考王晓东的《计算机算 ...

快速排序:先选最开始的元素为枢轴,然后分别从两头中的一头开始与枢轴比较。后面的应该大于枢轴,前面的应该小于枢轴,不然则交换(前面与后面),最后确定下来的位置(前后重合)就是枢轴的位置。这样一来原序列就一分为二。不断递归,再一分为二,最后直到被分为的两端中有一个元素单独的时候就结束...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
父母去世后,,还有一套房子,一个子女买下房子,如果有一个子女不... 印度妇女的为什么头上都有一颗红色的点? 室内装修一般多少钱一平方 装修房子大概要多少钱一平方 装装修费用多少钱一平米 番茄起源于什么时候 番茄是什么时候出现在中国的 如何使用cdma2000终端接打电话 英语解读汉字是如何排序的? 柚子高产栽培管理要点 小众好用的氨基酸洗面奶有哪些值得入手? 盐源玛瑙的功效与作用 玛瑙的功效是什么? 玛瑙有什么功效? 人教版八年级下英语 新目标七年级上英语Unit9 sectionB说课稿,急需!!谢谢!!! 初中英语8年级下册说课怎么说啊?高手教一教具体方法与过程!! 昨天晚上做梦被人杀了是什么征兆? 做梦被人杀是什么征兆? 急求仁爱版英语七年级说课稿。越多越好。 昨晚不知怎么的梦见我被人杀了,流了好多好多血!有什么预示吗? 上海七年级下册英语教案 哪里才能找到新目标英语七年级下册1~12单元完整的说课稿,谢谢! 梦到自己被人害死了,是怎么回事啊? 2000卡路里等于多少千焦 卡路里和千焦有什么区别? 大卡、卡路里、千焦之间是什么关系? 焦耳和卡路里的关系? 为什么越来越多人考营养师证书? 怎样将京东商城买家的订单数据导出来呀? 定期自动从京东、淘宝、拼多多、天猫等各电商平台导出订单数据,有工具推荐吗? 糖心玛瑙的功效与作用有哪些? 盐源玛瑙的功效有哪些 Dell电脑充不进去电 充电时显示的灯一下白色一下红色怎么办 戴尔笔记本电脑冲不进电有提示黄灯一直闪 三星s9十解锁图案密码忘记? 新买了一个三星s9放家里没用,现在忘了密码解不开,指纹和面部都用不了怎么办? 三星S9+ 三星笔记混合密码忘记了 怎么解决 三星s9350忘记混合密码,三星帐户密码也忘了,怎样才能解锁开机呢? 前几天我梦见和我死去一年多的朋友发小吵架!现在只记得模糊的几点我说下求高人给解解! 梦见死去的人和她吵架,她还说要报复? 梦见与过世亲友吵架是什么含意?在梦中并不觉得他已经过世! 梦见死去的人还活着,还和别人发生口角 昨晚梦到和一个死去一年多的同事阿姨吵架吵提很凶?不知道是什么意思? 晚上做梦,梦到男朋友和自己死去已久的朋友发生关系,被我听到了,然后我们开始吵架,记不清死去的朋友对 梦见以死去的好友 梦见跟当兵的谈恋爱 梦到和当兵的在一起了是为什么,求解 周公解梦梦见和很长时间没见面女战友知青说话? 梦见我和战友再次入伍 梦见和战友一起去海边游泳,碰到了还在部队当兵的战友,他们在海边执勤...
  • 焦点

最新推荐

猜你喜欢

热门推荐