UVA-120 煎饼 题解答案代码 算法竞赛入门经典第二版

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版

非常简单的一道题目。题目要求对序列排序。但是每次的操作只能是翻转从该元素到顶部元素的子序列。于是我们找到最大元素,然后首先翻转一次到顶部。然后再翻转一次就到底部了。然后再对上面n-1个元素继续这个过程。

AC代码

cpp 复制代码
#include <stdio.h>

int arrOrigin[35];
int len;
int arr[35];
int stepArr[70];
int stepLen;

int findMax(int i)
{
    int maxi = i;
    for (int j = i - 1; j >= 0; --j)
    {
        if (arr[j] > arr[maxi])
            maxi = j;
    }
    return maxi;
}

void flip(int i)
{
    int t;
    for (int j = 0; j <= i / 2; ++j)
    {
        t = arr[j];
        arr[j] = arr[i - j];
        arr[i - j] = t;
    }
}

void loop()
{
    int i, maxi;
    for (i = len - 1; i > 0; --i)
    {
        maxi = findMax(i);
        if (maxi == i)
            continue;
        if (maxi != 0)
        {
            flip(maxi);
            stepArr[stepLen++] = maxi;
        }
        flip(i);
        stepArr[stepLen++] = i;
    }
}

int main()
{
    int i;
    while (1)
    {
        len = 0;
        while (scanf("%d", &arrOrigin[len]) > 0)
        {
            arr[len] = arrOrigin[len];
            ++len;
            if (getchar() == '\n')
                break;
        }
        if (len == 0)
            return 0;
        stepLen = 0;
        loop();
        for (i = 0; i < len; ++i)
        {
            if (i != 0)
                putchar(' ');
            printf("%d", arrOrigin[i]);
        }
        putchar('\n');
        for (i = 0; i < stepLen; ++i)
            printf("%d ", len - stepArr[i]);
        putchar('0');
        putchar('\n');
    }
    return 0;
}
相关推荐
努力努力再努力wz31 分钟前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
Evand J32 分钟前
【电机滤波例程1】PMSM永磁同步电机转速与位置估计,MATLAB程序:标准无迹卡尔曼滤波、模型说明与仿真验证
算法·matlab·电机·ekf·负载·卡尔曼滤波
沫璃染墨1 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
打码的老程是远篁1 小时前
手把手教你玩转大模型——3. Transformer 的位置编码——模型怎么知道谁在前,谁在后?
人工智能·算法
嘎嘎风1 小时前
MiniMind 学习笔记之 06 一张图、一百行:MiniMind 的骨架
算法·源码
郝学胜_神的一滴1 小时前
C++ Templates 05:那些容易踩坑的技巧性基础知识
c++·visual studio
用户7341681035481 小时前
只盯被动响应做状态监测?论“控制信号”在变工况故障诊断中的重要作用
算法
Ivanqhz1 小时前
MQA、GQA、稀疏/滑动窗口注意力及混合范式
人工智能·算法·机器学习
罗湖老棍子1 小时前
荒岛野人(信息学奥赛一本通- P1637)(洛谷-P2421)
算法·数论·枚举·裴蜀定理·扩展欧几里得·扩展中国剩余定理
朝朝辞暮i1 小时前
C++ 第 40 章:ROS2 Publisher + Timer + Subscriber + Callback + Executor 完整闭环
开发语言·c++·算法·ros2