《数据结构编程实验》 1.5.9排列
来源:互联网 发布:机械零件加工制作软件 编辑:程序博客网 时间:2024/06/11 17:47
题目大意:
给出n个数的一个排列,求该排列按字典序的下k个排列。
题目地址:
POJ 1833
题解:
排列生成算法。从右往左数,第一个非递增的数字a,将a与它右边大于它的最小数b交换,交换后,将b右边的数字升序排列后,所得排列即为下一个排列。#include <iostream>#include <cstdio>using namespace std;int swap(int &x,int &y){ int t; t=x; x=y; y=t; return 0;}int f(int a[],int n){ int i,j,k; for (i=n-1;i>0;i--) if (a[i]<a[i+1]) break; if (i==0) {for (i=1;i<=n;i++) a[i]=i;return 0;} else for (j=i+1;j<=n;j++) if (a[j]<a[i]) break; j--; swap(a[i],a[j]); for (j=i+1,k=n;j<k;j++,k--) swap(a[j],a[k]); return 0;}int main(){ int a[1025]; int i; int m,n,k; scanf("%d",&m); while (m--) { scanf("%d%d",&n,&k); for (i=1;i<=n;i++) scanf("%d",&a[i]); for (i=0;i<k;i++) f(a,n); for (i=1;i<n;i++) printf("%d ",a[i]); printf("%d\n",a[n]); } return 0;}
0 0
- 《数据结构编程实验》 1.5.9排列
- 《数据结构编程实验》 1.5.1Sum
- 《数据结构编程实验》 1.5.3Quicksum
- 《数据结构编程实验》 1.5.7Vertical Histogram
- 《数据结构编程实验》 1.5.8Ugly Numbers
- 《数据结构编程实验》 1.5.10Number Sequence
- 《数据结构编程实验》 1.5.2Specialized Four-Digit Numbers
- 《数据结构编程实验》 1.5.4A Contesting Decision
- 《数据结构编程实验》 1.5.6The Circumference of the Circle
- 《数据结构编程实验》 1.1.1Financial Management
- 《数据结构编程实验》 1.2.1Doubles
- 《数据结构编程实验》 1.4.1Hangover
- 《数据结构编程实验》 1.4.2Humidex
- 《数据结构编程实验》 2.1.1Speed Limit
- 《数据结构编程实验》 2.2.1Self Numbers
- 《数据结构编程实验》 2.3.1Bee
- 《数据结构编程实验》 2.4.1Gold Coins
- 《数据结构编程实验》 2.4.3Pascal Library
- ios开发搜索框
- 安卓开发者必备的42个链接
- hdu 1022----Train Problem I(栈)
- OC基本数据结构-NSArray
- Linux的/etc/inittab文件中init级别设置成6(重启)或者不支持级别的解决方法
- 《数据结构编程实验》 1.5.9排列
- 篇幅不定,更新时间不定~~~~
- HDU 1251 统计难题 (Trie树 模板题)
- POJ-1750(缩进控制)
- 浅思OC的语言特性
- 改变
- OC面向对象三大特征
- pat1010 Radix
- Android项目使用appcompat_v7时遇到的问题