https://vjudge.net/problem/UVA-120

题意:颠倒连续子序列,使之成为升序。

思路:按照从大到小的顺序,依次选择出一个数字进行分析:

①如果该数字已经在正确的位置上,则不用管。

②如果该数字已经在最顶端,则从它该在的位置一直到顶端颠倒。

③如果该数字不在最顶端,则应先把它搞到最顶端,再从它该在的位置一直到顶端颠倒。

 #include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<sstream>
using namespace std; const int maxn = ;
int ans[maxn];
int coo[maxn];
int coo2[maxn];
int path[];
int k;
int num; string line; bool cmp(int a, int b)
{
return a > b;
} void convert(int t) //颠倒连续子序列
{
memcpy(coo2, ans, sizeof(ans));
for (int i = ; i <= t; i++)
{
ans[i] = coo2[t - i + ];
}
} void solve()
{
memcpy(coo, ans, sizeof(ans));
num = ;
sort(coo + , coo + k + , cmp);
for (int i = ; i <= k; i++)
{
int s = coo[i];
if (ans[k-i+] == s) continue; //如果已经在正确的位置上
for (int j = ; j <= k; j++)
{
if (ans[j] == s)
{
if (j != ) //如果未在顶端,先将它颠倒至顶端
{
convert(j);
path[num++] = k - j + ;
}
break;
}
}
convert(k - i + ); //颠倒至正确位置
path[num++] = i ;
}
path[num++] = ;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
while (getline(cin,line ))
{
k = ;
int x;
stringstream ss(line);
while (ss >> x) ans[++k] = x;
for (int i = ; i < k; i++)
cout << ans[i] << " ";
cout << ans[k] << endl;
solve();
for (int i = ; i < num - ; i++)
cout << path[i] << " ";
cout << path[num - ] << endl;
}
return ;
}

UVa 120 煎饼的更多相关文章

  1. Uva 120 - Stacks of Flapjacks(构造法)

    UVA - 120  Stacks of Flapjacks Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld &a ...

  2. (白书训练计划)UVa 120 Stacks of Flapjacks(构造法)

    题目地址:UVa 120 水题. 从最大的開始移,每次都把大的先翻到最上面,再翻到以下. 代码例如以下: #include <iostream> #include <cstdio&g ...

  3. UVA - 120 Stacks of Flapjacks(煎饼)

    题意:一叠煎饼,每个煎饼都有一个数字,每次可以选择一个数k,把从锅底开始数第k张以及其上面的煎饼全部翻过来,最终使煎饼有序排列(锅顶最小,锅底最大). 分析:依次从锅底向上,优先排数字最大的煎饼.每次 ...

  4. UVa 120 Stacks of Flapjacks【构造法】

    题意:给出n张煎饼,从上到下输入,每张煎饼上面都有一个数字,厨师每次可以选择第k张煎饼,进行翻转操作,设计一种方法使得所有煎饼按照从小到大排序(最上面的煎饼最小) 首先是这个翻转的操作,如下图 如图所 ...

  5. 【uva 120】Stacks of Flapjacks(算法效率--构造法+选择排序思想)

    题意:有N张正在锅里的一叠煎饼,每张都有一个数字,代表其大小.厨师每次可以选择一个数k,把从锅底开始数第k张上面的煎饼全部翻过来,即原来在上面的煎饼现在到了下面.要求设计一种方法使得所有煎饼按照从小到 ...

  6. uva 120 stacks of flapjacks ——yhx

     Stacks of Flapjacks  Background Stacks and Queues are often considered the bread and butter of data ...

  7. UVa 120 (构造) Stacks of Flapjacks

    这题求解的过程和选择排序非常相似. 反转的过程中分为无序(在前面)和有序(在后面)两个部分,一开始视为全部为无序. 在无序部分中找到最大的元素,先把它翻到最前面,然后再反转到无序部分的最后面.这样该元 ...

  8. UVA 120 Stacks of Flapjacks

    每次从最底部开始处理,如果不是最大值,则把最大值翻到底部.这就是最优解.原理自己模拟一下就好... 注意半径不是从1开始.数据处理要仔细. #include <iostream> #inc ...

  9. 紫书 例题8-1 UVa 120(构造法)

    #include<cstdio> #include<iostream> #include<sstream> #include<algorithm> #d ...

随机推荐

  1. libSVM简介及核函数模型选择

    1. libSVM简介 训练模型的结构体 struct svm_problem //储存参加计算的所有样本 { int l; //记录样本总数 double *y; //指向样本类别的组数 struc ...

  2. nodejs 将网上的图片下载到本地文件

    var request = require('request'); var fs = require('fs'); var img_src = 'https://www.baidu.com/img/b ...

  3. 【upstream】Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  4. JSON—序列化

    表单数据的序列化   用SerializeArray()将有效控件序列化为JSON对象数组? 包含name和value两个属性 SerializeArray()检测一组表单元素中的有效控件? 1.没有 ...

  5. Zooming

    Zooming 是一款纯 javascript 图片缩放库,主要特点有: 不依赖其他库,纯 JavaScript 实现,支持移动设备: 流畅的动画: 可缩放高清图像: 易于集成和定制. 使用方法 1. ...

  6. jq ajax传参的两种方式

    第一种   在url ? 后通过拼接传参   第二种 通过data传参 (1)第一种方法:(通过url传参) function GetQuery(id) { if (id ==1||id==7) { ...

  7. 论文笔记:Emotion Recognition From Speech With Recurrent Neural Networks

    动机(Motivation) 在自动语音识别(Automated Speech Recognition, ASR)中,只是把语音内容转成文字,但是人们对话过程中除了文本还有其它重要的信息,比如语调,情 ...

  8. Python中的is和==的区别,==判断值是否相等,is判断地址是否一致

    Python中的is和==的区别 Python中的对象包含三要素:id.type.value. 其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是 ...

  9. Open-Falcon

    A Distributed and High-Performance Monitoring System Scalability Scalable monitoring system is neces ...

  10. 深入hibernate的三种状态(转)

    hibernate的三种状态: 瞬时对象,持久化对象,托管对象. hibernate的两级缓存:1>一级缓存:session    2>二级缓存:sessionfactory. 瞬时对象: ...