UVa120

相当于是一个模拟,为了得到合适的顺序,我们的策略是每次找到当前没有被翻的里面最大的,然后把他翻到最前面,然后再翻到合适的位置。

需要判断一下当前是否已经有序,有序就不用翻了。

如果在最开头找到了合适的当前应该翻的应该不翻,因为最开头不需要。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<climits>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<string>
using namespace std;typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=35;
int a[MAXN],tot,b[MAXN],idx,c[MAXN];bool ok()
{int t=0;for(int i=0;i<tot;i++){if(a[i]>t) t=a[i];else return false;}return true;
}void Reverse(int x)
{int tmp;for(int i=0,j=(x+1)/2;i<j;i++){tmp=a[i]; a[i]=a[x-i]; a[x-i]=tmp;}
}int main()
{string line;int tmp;while(getline(cin,line)){tot=0;stringstream ss(line);while(ss >> tmp){b[tot]=tmp;a[tot]=tmp;c[tot]=tmp;tot++;}for(int i=0;i<tot-1;i++){printf("%d ",c[i]);}printf("%d\n",c[tot-1]);sort(b,b+tot);while(!ok()){idx=tot-1;while(idx>0 && a[idx]==b[idx]){idx--;}if(idx==0) break;for(int i=0;i<idx;i++){if(a[i]==b[idx]){if(i==0)break;printf("%d ",tot-i);Reverse(i);break;}}printf("%d ",tot-idx);Reverse(idx);}printf("0\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的相关操作

二叉树的数据结构 typedef char SearchTreeType; typedef struct SearchTreeNode { SearchTreeType key; // 关键码 struct SearchTreeNode* lchild; struct SearchTreeNode* rchild; } SearchTreeNode; 二叉树的初始化 由于我们是用一个指向根节点的指针表示一个二叉树, …

网络层:网关协议

一. 网关 所谓的网管即就是之前路由器的名字, 即路由器和网关是一个东西 二. 内部网关协议 1. RIP协议 路由信息协议 RIP 是内部网关协议 IGP中最先得到的广泛使用的协议. 同时 RIP 是一种分布式基于距离向量的路由选择协议. RIP 协议要求网络中的每一个路由都必须维护自己…

UVa1152

题意很好理解&#xff0c;就是从四个集合里面取出四个数字的和为0&#xff0c;问有多少种取法。 直接枚举肯定是会超时的&#xff0c;所以得想办法优化一下。我们可以将两个集合的所有的和都放在一个数组里面&#xff0c;这样得到两个数组&#xff0c;然后排序&#xff0c;对第…

Linux函数--inet_pton / inet_ntop

http://blog.csdn.net/lindyl/article/details/10427925 inet_pton 和 inet_ntop Linux下这2个IP地址转换函数&#xff0c;可以在将IP地址在“点分十进制”和“整数”之间转换而且&#xff0c;inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pto…

网络基础: 浅析应用层一

应用层 1. http协议 在 http 中协议分为了协议方案名, 登录信息名, 服务器地址, 服务器端口号(http协议绑定的端口号), 文件类型, 查询的字符串, 片段标识位 2. http 请求协议格式 httpp 总共分为三大部分, 其中首行即就是第一部分, 分为三个区域, 第一去个区域是请方法, 第…

socket 编程篇六之IPO多路复用-select poll epoll

http://blog.csdn.net/woxiaohahaa/article/details/51498951 文章参考自&#xff1a;http://blog.csdn.net/tennysonsky/article/details/45745887&#xff08;秋叶原 — Mike VS 麦克《Linux系统编程——I/O多路复用select、poll、epoll的区别使用》&#xff09; 此外&#x…

UVa11054

挺简单的小模拟。 还是要注意思维的方向&#xff0c;要有切入点&#xff0c;不能像无头苍蝇一样东想一下西想一下&#xff0c;而应该分析问题的性质&#xff0c;然后尝试思维的方向&#xff0c;从不同的方向思考&#xff08;顺序&#xff0c;逆序&#xff0c;排序后&#xff0…

浅谈传输层

1. 传输层的作用 在传输层中有两个特别重要的协议 TCP/UDP . 以快递员送快递为例说明这个问题吧. 在进行包裹传输的过程中快递员需要根据快递上的目的地址(目的计算机)来投递包裹(IP数据报), 加入在快递单上只写了收件人的所在地, 所在单位, 而只写了收件人的姓没有写收件人的…

UVa10375

题目描述很简单,就是求两个组合数的商.可是数字范围很大,肯定不能直接计算. 因此要用到唯一分解定理,即将结果全部表示为素因子的幂的形式. #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype> #inc…

I/O复用的 select poll和epoll的简单实现

http://www.cnblogs.com/wj9012/p/3876734.html 一个tcp的客户端服务器程序 服务器端不变&#xff0c;客户端通过I/O复用轮询键盘输入与socket输入&#xff08;接收客户端的信息&#xff09; 服务器端&#xff1a; 1 /*服务器:2 1.客户端关闭后&#xff0c;服务器再向客户端发送…

netstat 相关命令解析

1.列出所有的端口 netstat -a 列出TCP协议的端口 netstat -at UDP协议的端口 netstat -au 2.列出处于监听状态的socket netstat -l 列出监听的TCP端口 netstat -lt 列出监听的UDP端口 netstat -lu 列出监听的UNIX端口 netstat -lx 3.列出协议的统计信息 nestat …

UVa10791

我们可以先用唯一分解定理将这个数字分解成素因子幂的乘积&#xff0c;为了得到最小的和&#xff0c;我们可以发现&#xff1a;每个 素因子的幂单独分开的和是最小的。 先说明每个素因子都是以出现的最大的次数出现。因为最小公倍数一定&#xff0c;因此至少有一个数字的这个素…

TCP相关代码

TCP 基础代码 //tcp_server.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<st…

UVa1635

我们很容易发现最后每一项的系数就是二项式展开&#xff0c;余数和m没有关系就意味着可以被m整除&#xff0c;因此我们就需要求出每一个二项式的系数。但是数据实在太大我们根据唯一分解定理将m和系数都进行分解&#xff0c;然后比较因子的幂。 二项式的计算我们可以根据杨辉三…

几种并发服务器模型的实现:多线程,多进程,select,poll,epoll

http://www.cnblogs.com/wj9012/p/3879605.html 客户端使用select模型&#xff1a; 1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #include <errno.h>5 #include <sys/types.h>6 #include <sys/socket.h>7 #include …

哈希表1

1. 初始化 void HashInit(HashTable* ht, HashFunc func) {if(ht NULL || func NULL){return;}ht -> size 0;ht -> func func;int i 0;for(; i < HashMaxSize; i){ht -> data[i].state Empty;} } 2. 哈希表的销毁 void HashDestroy(HashTable* ht) {if(ht…

UVa10820

实质上就是求欧拉函数值 书上有个板子挺好&#xff0c;也不难理解。 #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype> #include<queue> #include<set>using namespace std;typedef l…

linux socket 编程(C语言)

https://www.cnblogs.com/x_wukong/p/4541010.html 最近看了一些网络编程的书籍&#xff0c;一直以来总感觉网络编程神秘莫测&#xff0c;其实网络编程入门还是很容易学的&#xff0c;下面这些代码是我在linux下编写的&#xff0c;已经运行过了&#xff0c;编译之后就可以运行了…

哈希表2

哈希表的初始化 void HashInit(HashTable* ht, HashFunc func) {if(ht NULL){return;}ht -> size 0;ht -> func func;size_t i 0;for(; i < MaxSize; i){ht -> data[i] NULL;} } 哈希表的结点创建 HashElem* CreateHashElemNode(KeyType key, ValueType va…

位图

相关数据结构 typedef uint64_t BitmapType;#define BITMAPMAXSIZE 1000 //位图所能容纳的位数typedef struct Bitmap {uint64_t* data;uint64_t capacity; }Bitmap; 初始化 void BitmapInit(Bitmap* bm, uint64_t capacity) {if(bm NULL){return;}//当capacity 100, 2个元…