POJ 1833 排列
来源:互联网 发布:node sass失败 编辑:程序博客网 时间:2024/05/21 05:55
题意:
给你一个排列,要你求这个排列下的第K个排列,如果遇到最后一个排列,则下1个排列为第一个排列
思路:
c++的STL中提供了一个库函数next_permutation求下一个排列,当求出的排列为最后一个排列时,返回值为0,注意提交的时候用C++,不然会TLE
代码如下
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>#include<limits.h>using namespace std;int main(){int m;scanf("%d",&m);while(m--){int n,sum;int a[1111];scanf("%d %d",&n,&sum);for(int i=1; i<= n; i++)scanf("%d",&a[i]);int flag=0;while(flag< sum){while(next_permutation(a+1,a+n+1)){flag++;if(flag==sum){printf("%d",a[1]);for(int i=2; i<= n; i++)printf(" %d",a[i]);printf("\n");break;} }for(int i=1; i<= n; i++)a[i]= i;flag++;if(flag==sum){printf("%d",a[1]);for(int i=2; i<= n; i++)printf(" %d",a[i]);printf("\n");break;}}/*我之前不知道next_permutation执行到最后一个排列时候,再往下执行时会自动循环到第一个排列 所有我在 ext_permutation执行到最后一个排列,做了特判,让排列跳到第一个排列去 后面月神告诉我了,我才知道这里其实不必要写这么长只需要int flag=0;while(flag< sum){flag++;next_permutation(a+1,a+n+1);}printf("%d",a[1]);for(int i=2; i<= n; i++)printf(" %d",a[i]);printf("\n");*/ }return 0;}
next_permutation的用法:
作用是求当前排列的下一个排列
这个函数的用法就和sort一样,注意执行到最后一个排列时,函数返回值为0
- POJ-1833(排列)
- POJ 1833 排列
- poj 1833 排列
- POJ 1833 排列
- poj 1833 排列
- POJ 1833 -排列
- poj 1833 排列
- POJ 1833 排列 (STL)
- POJ 1833 排列
- POJ 1833 排列
- POJ 1833 排列
- POJ 1833 排列 简单
- POJ 1833 排列
- poj 1833 排列 next_permutation
- poj-1833-排列
- poj 1833 排列(STL)
- poj 1833排列
- POJ 1833 生成排列
- catalan数在笔试题中的应用
- linux 在服务器方面的几个指标
- ios开启多点触控
- spring定时任务时间格式cronExpression设置
- C Looooops
- POJ 1833 排列
- opendaylight——web中osgi的bundle的安装与卸载
- mips指令
- 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
- gnuplot
- __stdcall与__cdecl
- 可变参数函数
- PS 快捷键大全
- 教你打包Java程序,jar转exe随处可跑