全排列函数next_permutation的用法
注意:此代码会超时,只能过部分测试点
蓝桥可以用STL,所以能用全排列函数(此函数在STL中)
#include<bits stdc++.h>
using namespace std;
#define ll long long
int const N=1e3+7;
int const INF=0x3f3f3f3f;
int const mod=123456;
int n,k,cnt;
int a[N];
int main(){
cin >> n >> k;
for(int i=1;i<=n;++i){
a[i]=i;
}
do{
int z=0;
for(int i=2;i<=n-1;++i){
if(a[i]>a[i-1]&&a[i]>a[i+1] || a[i]<a[i-1]&&a[i]<a[i+1]) z++; if(z>=k || z+n-i<=k-2) break;
}
if(z==k-1) cnt++;
cnt%=mod;
}while( next_permutation(a+1,a+n+1) ); //此函数为a的下一个排列
//prev_permutation(a+1,a+n+1); //此函数为a的上一个排列
cout << cnt;
return 0;
}
```</a[i-1]&&a[i]<a[i+1])></bits>
蓝桥真题 文章被收录于专栏
蓝桥真题的题解