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;
}
相关推荐
水云桐程序员16 分钟前
C++可以写手机应用吗
开发语言·c++·智能手机
平凡但不平庸的码农32 分钟前
Go Slice 详解
算法·golang
炸膛坦客3 小时前
嵌入式 - 数据结构与算法:(1-7)数据结构 - 顺序表和链表的对比
数据结构·链表
Jasmine_llq4 小时前
《B3867 [GESP202309 三级] 小杨的储蓄》
算法·循环遍历·数组累加(模拟)·索引定位·顺序输出
啦啦啦_99994 小时前
案例之 逻辑回归_电信用户流失预测
算法·机器学习·逻辑回归
风筝在晴天搁浅4 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
小黄人软件4 小时前
C++读写编辑CSV文件示例源码 用于数据导入导出,比Excel好使
开发语言·c++·excel
郭涤生4 小时前
C++各个版本的性能和安全性总结
开发语言·c++
hoiii1875 小时前
基于栅格法的机器人工作空间划分系统
数据结构·机器人
DragonnAi5 小时前
猫咪如厕检测与分类识别系统系列【十四】 项目结构重新整理-即将开源完整算法
算法·开源