zoukankan      html  css  js  c++  java
  • 全排列 next_permutation()函数

    擅长排列的小明

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
    描述
    小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
    输入
    第一行输入整数N(1<N<10)表示多少组测试数据,
    每组测试数据第一行两个整数 n m (1<n<9,0<m<=n)
    输出
    在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例
    样例输入
    2
    3 1
    4 2
    样例输出
    1
    2
    3
    12
    13
    14
    21
    23
    24
    31
    32
    34
    41
    42
    43
    
    
    只是next_permutation()的简单应用而已
    #include<stdio.h>
    #include<algorithm>
    #include<iterator>
    using namespace std;
    int main()
    {
    	int n,M,N;
    	
    	int last[10]={0};
    	scanf("%d",&n);
    	while(n--)
    	{
    		int a[10]={1,2,3,4,5,6,7,8,9};
    		scanf("%d%d",&M,&N);
    		do
    		{
    			if(!equal(a,a+N,last))
    			{
    				copy(a,a+N,last);
    				for(int i=0;i!=N;i++)//额,这里只需要输出前N个数字就可以了
    				{
    					printf("%d",a[i]);
    				}
    				puts("");
    			}
    		}while(next_permutation(a,a+M));
    	}
    } 
    
  • 相关阅读:
    主成分分析法(PCA)答疑
    搜索引擎的高级用法
    Makefile 编写实例
    GCC常用命令
    一个进程最多能开多少个线程?
    归并排序
    选择排序(数组、链表)
    求连续子数组的最大和
    生产者-消费者问题(1)
    基于cmake编译安装MySQL-5.5
  • 原文地址:https://www.cnblogs.com/nanke/p/2048566.html
Copyright © 2011-2022 走看看