排列 POJ
来源:互联网 发布:mac版金蝶友商智慧记 编辑:程序博客网 时间:2024/06/06 02:48
题目地址:POJ-1833
/*当序列递减的时候才是最大所以,先从后往前找到一个 s[n]<s[n+1]的n点然后在n+1后面的点找一个s[k]<s[n+1]&&s[k]>s[n]的s[k]值最小的k点 k点与n交换如果找不到则n点与n+1点交换对n点以后的序列排序*/#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int num[1200];int n,k;void reverse(){ int mid=n/2,t; for(int i=0;i<mid;i++){ t=num[i]; num[i]=num[n-1-i]; num[n-1-i]=t; }}int main() { int N,i,x,y,MIN; scanf("%d",&N); while(N--) { scanf("%d %d",&n,&k); for(i=0; i<n; i++) scanf("%d",&num[i]); int p=0; while(1) { p++; if(p>k)break; x=-1,y=-1,MIN=2000; for(int i=n-2; i>=0; i--) if(num[i]<num[i+1]) { x=i; for(int j=i+2; j<n; j++) { if(num[j]<num[i+1]&&num[j]>num[i]&&MIN>num[j]) { MIN=num[j]; y=j; } } break; } if(x!=-1&&y==-1){ int t=num[x+1]; num[x+1]=num[x]; num[x]=t; }else if(x!=-1&&y!=-1){ int t=num[y]; num[y]=num[x]; num[x]=t; } sort(num+x+1,num+n); } for(i=0;i<n-1;i++) printf("%d ",num[i]); printf("%d\n",num[i]); } return 0;}
0 0
- poj排列
- 排列 POJ
- POJ 1183排列
- POJ-1833(排列)
- POJ 1833 排列
- poj 1833 排列
- POJ 1146 下一个排列
- POJ 3842 排列问题
- POJ 1833 排列
- poj 1833 排列
- POJ 1833 -排列
- poj-1146-全排列
- poj 1833 排列
- POJ 1256 全排列
- POJ 2013 对称排列
- POJ 1833 排列 (STL)
- POJ 1833 排列
- POJ 1833 排列
- POJ 2250 (最长公共子序列LCS)
- 学习Node.js+MongoDB+AngularJS(1)
- JdbcUtils工具类
- Matlab探寻(一):控制鼠标和模拟键盘(java.awt.Robot)
- 初识HTML
- 排列 POJ
- 第一次学习java,很难受
- SDP协议
- Linux 内核中的 GCC 特性
- 微信公众号开发-emoji表情存库异常
- 前台页面跳转的例子(两种实例)
- 使用<a>标签,连接到另外一个页面
- hdfs工作机制及读写数据简要流程图
- ios NSURLRequest NSMutableURLRequest 数据请求