几种求排列数的方法例如:给出n=3求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1一共有几种算法可以求出这个结果呀?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 08:20:02
几种求排列数的方法例如:给出n=3求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1一共有几种算法可以求出这个结果呀?

几种求排列数的方法例如:给出n=3求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1一共有几种算法可以求出这个结果呀?
几种求排列数的方法
例如:给出n=3
求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1
一共有几种算法可以求出这个结果呀?

几种求排列数的方法例如:给出n=3求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1一共有几种算法可以求出这个结果呀?
前面的热心网友回答的那种穷举法可以,但比较耗时且不易扩展.
全排列问题其实就是一个深度搜索的问题,一般采取回溯法来解决.
当然就具体问题还要考虑剪枝等细节问题,不过你这里只是全排列就不用考虑那么多了.
比较有名的题目是八皇后问题.
 
下面给一个全排列问题的递归解法,改变N的值可以对不同数进行全排列.
如果要求输入n来全排列的话把数组a改成动态分配,并作为参数送入各个函数就行了.
 
#include <iostream>
using namespace std;
#define N 3
int a[N];
void printSeq()
{
 for(int i=0; i<N; i++) cout << a[i] << " ";
 cout << endl;
}
bool isok(int i, int k)
{
 for(int j=0; j<i; j++)
 {
  if(a[j] == k) return false;
 }
 return true;
}
void calcSeq(int i)
{
 if(i==N) printSeq();
 else
 {
  for(int k=1; k<=N; k++)
  {
   if(isok(i, k))
   {
    a[i] = k;
    calcSeq(i+1);
   }
  }
 }
}
int main()
{
 calcSeq(0);
 return 0;
}
 
另外也有非递归解法,模拟一个栈来做

几种求排列数的方法例如:给出n=3求得所有的排列数为 1 2 3 ,1 3 2,2 1 3,2 3 1,3 1 2 ,3 2 1一共有几种算法可以求出这个结果呀? 一个简单的ACM题目,求解给定一个小于10的数n,然后求一连串排列.这个数n有多大,排列就有多少位,从小到大排列出所有排列,但排列中任意两位的数字不能相同,并且排列中最小的数为1.例如:n=3 给出一个一次排列的数1,-3,5,-7,9…,请按规律写出第n个数为 关于数学排列数公式的问题,A-n-m(下标n,上标m)=n!除以乘以(n-m)!为什么?详细的推导过程、我没有学过这个公式,排列和排列数我已经懂了,但是还是不知道这个公式的意思,不知道这个公式求得是 给出依次排列的一列数2、4、8、16、32,……,1)按照依次给出的几个数的排列规律,继续写出后面的3个数;2)这个数的第2014项是几?第n项呢? 给出依次排列的一列数:-1,2,-4,8,-16,32,...第n个数是? 给出依次排列的一列数:-2,4,-8,16,-32…,第n个数是? 请问一道数学题的思路和解法用n个不同的实数a1,a2,a3,...,an可得到n!个不同的排列,每个排列第一行,写成一个n!行的数阵.对第i行ai1,ai2,ai3,...,ain,记bi=-ai1+2ai2-3ai3+...+(-1)^n*n(ain),i=1,2,3,...,n!.例如: 材料:从m个人中选出n人排成一列的所有的排列方法的总是(下列简称排列数)记为Anm(n为上标,m为下标)=m*(m-1)*(m-2)*...*(m-m+1),特别地当m=n时即从m个人中选出m个人进行全排列为Amm( 给出一依次排列的一组数1, -3 ,5, -7 ,9……请按规律写出第7个数为 第N个数为急! 给出依次排列的一组数-1,3,-5,+7,-9……请按规律写出第n个数为 给出依次排列的一组数1,-3,5,-7,9……,请按规律写出第7个数为(13)第n个数为( ). 黄金排列数的定义是什么?怎么推出来的?(n-1)[s(n-1)+s(n-2)] 是指满足n个数都不在它所对应的位置上如n=3.1,2,3三数,1不能在第一位,且2不能在第二位,且3不能在第三位的所有排列的个数么?黄金 关于概率中的排列,排列数是怎么得到的?C=数目了,具体怎么算的就是怎么算排列,一般只给出个排列总数,具体怎么运算出来的。例如:有一楼梯共有10级,如规定每次只能跨上一级或二级, 关于证明阶排列中奇偶排列数相等的问题n 级排列123456...n总共有n个数字,那么就有排列A(n,n)=n!中排列 如果奇排列数为t,偶排列数为s 那么有t+s=n!如果将t个奇排列数和相邻数对调一下,即变成了 设f(x)=(x^3)( |x|),即函数f(x)等于x的三次方乘以x的绝对值,问f(0)存在n阶导数最高阶数n等于多少?请给出详细解题过程及所用到的方法 关于全排列及其逆序数为什么“对于排列n(n-1).21,当n=4k或4k+1时是偶排列,当n=4k+2或4k+3时是奇排列.”《已经求出排列n(n-1).21的逆序数为n(n-1)/2》 化简:(-1)2n= ,(-1)2n+1 n 为正整数给出依次排列的一列数:-2,-8,16,-32…,后面的2项是64,-128,第n个数是-----------------------------