📄 c_arrange_字典序法.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 + -