鸭绿江卫星地图:全排列的一个小问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 11:42:01
我的程序,全排列9个数:

#include <iostream>
using namespace std;

int f(int n,int a[],int lay,int b[]) //递归函数
{
int i=1,j=1;
if (lay==1) //递归出口 ,判断是否将n个数排完
{
b[n]=a[1]; //赋值最后一个数
for (i=1;i<=n;i++) //输出排好的数
{
cout<<b[i];
}
cout<<endl;
}
else
{
for(i=1;i<=lay;i++)
{
b[n-lay+1]=a[i]; //排列第lay位数

for (j=i;j<=lay-i;j++)//删除表a中排过的数
{
a[j]=a[j++];
}

f(n,a,lay--,b);//排下一个数

for (j=i;j<=lay-i;j++) //恢复删除过的数以继续循环排列
{
a[j++]=a[j];
}
a[i]=b[n-lay+1];
}
}
return 0;
}

int main()
{
int n=9,lay=9,a[10],b[10],i,endpass;

for(i=1;i<=n;i++)
{
a[i]=i;
}
f(n,a,lay--,b);
cin>>endpass;//使程序能断一下,不会一闪而过
return 0;
}

怎么闪一下就没了,我用的是Dev C++ 4.9.9.2