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

📄 逆序法.cpp

📁 采用逆序法生成排列 从n个空位开始
💻 CPP
字号:
//逆序法排序
#include<iostream>
using namespace std;

#include <new>

int main()
{
	int counter;

	cout<<"请先输入你所要排列的总的元素数目,即(1,2…n)中n = :";
	cin>>counter;

	int *array1=new int[counter+1];//create array1 according to 'counter'.
	int *array2=new int[counter+1];//create array2 according to 'counter'.

	cout<<"请输入从 1 至 n 各元素的逆序数:";
	for(int m = 1; m <= counter; m++)
	{
		cin>>array1[m];//initialize
    }

	for(int n = 1; n <= counter; n++)
		array2[n] = 0;//initialize


	cout<<"排列过程:"<<endl;
	int flag = 0;
	for(int i = 1;i <= counter; i++)
	{
		int counter1 = 0;

		for(int j = 1; j <= counter; j++)
		{
		      if(array2[j] == 0)//the place is available if it has the value of 0, else it has been used,then we need to slip.
			  {
				  counter1++;
			  }
			  if(counter1 == array1[i] && array1[i] != 0)
			  { 
				  j++;
				  flag = j;
				  break;
			  }
			  else
				  if(array1[i] == 0)
				  {
					flag = 1;
				  }
		}
              
		for(int counter2 = flag; counter2 <= counter; counter2++)
		{

			if(array2[counter2] == 0)//if it hasn't been used.
			 {
			    array2[counter2] = i;
				break;
			 }
		}

		for(int p = 1; p <= counter; p++)
			cout<<array2[p]<<' ';
		cout<<endl;
	}//end for


	cout<<"最终得到排列:"<<endl;

    for(int k = 1; k <= counter; k++)
		cout<<array2[k]<<' ';

    cout<<endl;


return 0;

}//end

⌨️ 快捷键说明

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