问题 3888 --全排列(完善程序)

3888: 全排列(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 97  解决: 82
[提交][状态][命题人:]

题目描述

下面程序的功能是利用递归方法生成从1到n(n<10) 的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):

123 132 213 231 321

312

#include <iostream> 
#include <iomanip>
using namespace std;
int n,a[10]; //a[1],a[2],......,a[n]构成 n个数的一个排列
long count=0; //变量 count 记录不同排列的个数,这里用于控制换行
void perm(int k)
{
	int j,p,t;
	if(______(1)_______)
	{
		count++; 
		for(p=1;p<=n;p++)
			cout <<setw(1)<<a[p];
		cout <<" ";
		if(_____(2)______) 
			cout <<endl; 
		return;
	}
	for(j=k;j<=n;j++)
	{
		t=a[k];
		a[k]=a[j];
		a[j]=t;
		_______(3)______;
		t=a[k];
		_______(4)_______;
	}
}
int main()
{
	int i;
	cin >>n; 
	for(i=1;i<=n;i++) a[i]=i;
	______(5)______;
}


输入

输出

样例输入
Copy
3
样例输出
Copy
123 132 213 231 321
312

提示

来源

[提交][状态]