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.pswp.cn/news/383964.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383964.shtml
英文地址,請注明出處:http://en.pswp.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個元…