您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页C++语言 next_permutation

C++语言 next_permutation

来源:华拓科技网

next_permutation 全排列函数

纸条1:全排列

纸条2:组合数

推荐题目

P1706 全排列问题

#include<bits/stdc++.h>
using namespace std;
int n;
int i;
int j=1;
int k;
int a[10];
int main()
{
	cin>>n;
	for(i=1;i<=n;i++){
		a[i]=n-i+1;
		j*=i;
	}
	for(i=1;i<=j;i++){
		next_permutation(a+1,a+n+1);
		for(k=1;k<=n;k++)
			cout<<"    "<<a[k];
		cout<<endl;
	}
	return 0;
}

P1088 [NOIP2004 普及组] 火星人

#include<bits/stdc++.h>
using namespace std;
int a[100000];
int n;
int m;
inline int read(){
    int re=0;
	int f=1;
	char ch=getchar();
    while(ch<'0' || ch>'9'){
    	if(ch=='-'){
			f=-1;
			ch=getchar();
		}
	} 
    while(ch>='0' && ch<='9'){
    	re=re*10+(ch-'0'); 
		ch=getchar();
	}
    return re*f;
}
int main(){
    n=read(); 
	m=read();
    for(int i=1;i<=n;++i) 
		a[i]=read();
    for(int i=1;i<=m;++i) 
		next_permutation(a+1,a+n+1);
    for(int i=1;i<=n;++i) 
		printf("%d ",a[i]);
    return 0;
}

P1157 组合的输出

#include<bits/stdc++.h>
using namespace std;
int x[30];
int n,r;
int main(){
    cin>>n>>r;
    for(int i=r+1;i<=n;i++)
        x[i]=1;
    do{
        for(int i=1;i<=n;++i){
        	if(x[i]==0)
        		printf("%3d",i);
		}
        printf("\n");
    }while(next_permutation(x+1,x+n+1));
    return 0;
}

THE END

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务