当前位置:文档之家› 蛮力法求全排列

蛮力法求全排列

蛮力法任务分配问题1
#include
using namespace std;

int factorial(int n)//求阶乘,用来判断有多少个排列数
{
int i,sum=1;
for(i=1;i<=n;i++)
{
sum*=i;
}
return sum;
}

int main()
{
int a[10];
int n,i;
cin>>n;

for(i=1;i<=n;i++)
{
cin>>a[i];
}

int s,k;

s=factorial(n);

for(k=1;k<=s;k++)//从小到大依次输出每次排列情况
{
for(i=1;i{
cout<}
cout<
int i,j;
i=n;

while(a[i-1]>a[i])//从n往前,两两比较,找到第一个出现的,前面的数比后面的小的,记下它的位置
{
i=i-1;
}
i=i-1;

j=n;
while(a[i]>a[j])//从n往前,找到第一个比上面找到的那个数大的
{
j=j-1;
}

swap(a[i],a[j]);//交换上面两个数字的值

int t;
int p;

t=i+1;
p=n;
int temp;
while(t{
swap(a[t],a[p]);
t++;
p--;
}

}
return 0;
}

相关主题
文本预览
相关文档 最新文档