蛮力法任务分配问题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;
}