全排列是排列数学中常用的算法之一,而C++ STL中就提供了内置的全排列函数 next_permutation.
我主要通过例题来展示该函数的用法
题目 (来源:蓝桥云课)
解题思路:对10个数进行全排列后判断哪个排列能组成完全平方数,记录最大的平方数
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[12];
int main ()
{
int i;
long long sum,ans=0,t;
for(i=0;i<=9;i++)
a[i]=i;
do{
sum=0;
for(i=0;i<=9;i++)
{
sum=sum*10+a[i];
}
t=sqrt(sum);
if (t*t==sum)
ans=max(ans,sum);
}while(next_permutation(a,a+10));
cout<<ans<<endl;
return 0;
}