⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_arrange_字典序法.cpp

📁 这是对C++实现排列的字典序数生成方法
💻 CPP
字号:
#include <iostream.h>
void main()
{
	//初始化要排列的数放入一个数组中
	int a[]={1,2,3,4};
	int ArrangeNum=1;
    for(int m=0;m<4;m++)cout<<a[m];cout<<endl;//打印第一个给定的排列
	do
	{
		int flag1=0,flag2=0,T=0,b=0;		//flag1记录改变最小的两个数 T用于数据的交换 b用于交换
		for(int i=0;i<=2;i++)
			if(a[i]<a[i+1])flag1=i+1;//flag1记录的是
		if(flag1==0)break;//如果flag1的值为0表明后边无升序的数,此数值为最大
		for(int j=flag1;j<=3;j++)
			if(a[flag1-1]<a[j])flag2=j;
			//交换
			T=a[flag1-1];
			a[flag1-1]=a[flag2];
			a[flag2]=T;
			//将flag1及后边的数据逆序排列
			for(int k=flag1;k<=(flag1+3)/2;k++)
			{
				T=a[k];
				a[k]=a[3-b];
				a[3-b]=T;
				b++;
			}
			//打印新的排列
			for(int m=0;m<4;m++)cout<<a[m];
			cout<<endl;
			ArrangeNum++;
	}while(1);
	cout<<"排列的个数为:"<<ArrangeNum<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -