c语言煎饼问题算法,C煎饼分类程序?

此C程序在整数数组上实现Pancake Sort。

煎饼分类是分类问题的一种变体,其中唯一允许的操作是反转序列中某些前缀的元素。

煎饼分类是一个数学问题的通俗术语,即按照煎饼的大小顺序对一堆无序的煎饼进行分类,这时可以在煎饼堆中的任何一点插入一个锅铲,然后用它把所有的煎饼翻过来。煎饼数是给定数量的煎饼所需的最小翻转次数Input:5,3,2,1,4

Output:1 2 3 4 5

说明

它是排序问题的一种变体,在排序问题中,唯一允许的操作是反转序列中某些前缀的元素。与传统的排序算法不同,传统排序算法试图用尽可能少的比较进行排序,其目标是尽可能少地对序列进行反向排序。这个问题的另一个变体与烧焦的煎饼有关,每个煎饼都有一个烧焦的一面,而且所有的煎饼都必须以烧焦的一面在底部结束。

示例#include 

using namespace std;

void do_flip(int *, int, int);

int pancake_sort(int *list, unsigned int length) {

if (length 

return 0;

int i, a, max_num_pos, moves;

moves = 0;

for (i = length;i > 1;i--) {

max_num_pos = 0;

for (a = 0;a 

if (list[a] > list[max_num_pos])

max_num_pos = a;

}

if (max_num_pos == i - 1)

continue;

if (max_num_pos){

moves++;

do_flip(list, length, max_num_pos + 1);

}

do_flip(list, length, i);

}

return moves;

}

void do_flip(int *list, int length, int num) {

int swap;

int i = 0;

for (i=0;i 

swap = list[i];

list[i] = list[num];

list[num] = swap;

}

}

int main(int argc, char **argv) {

int arr[]={5,3,2,1,4};

int n=5;

int moves=pancake_sort(arr, n);

for (int i = 0;i 

printf("%d ", arr[i]);

}

printf(" - with a total of %d moves\n", moves);

}

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

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

相关文章

c语言有语段不运行,各位C语言的高手,帮忙看下下面两段代码!他们不能运行!急!!!!!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼nL->next;while(n->next!NULL){if(n->data.mathnext->data.math){an->data;n->datan->next->data;n->next->dataa;nn->next;}elsenn->next;}}linklist*outnew(linklist*P,linklist*q){int n0;…

c语言L文件,frexpl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

在头文件中定义float frexpf(float arg,int * exp);(1)(自C99以来)double frexp(double arg,int * exp);(2)long double frexpl(long double arg,int * exp);(3)(自C99以来)在头文件中定义#define frexp(arg,exp)(4)(自C99以来)1-…

计算机二级c语言第82套,计算机等级考试二级C语言模拟试题十套答案

很好的模拟试题计算机等级考试二级C语言模拟试题(1)答案:选择题1 -10 C D B D D C D C C D11-20 C A B B C B B A C B21 -30 D D B D C A C A A C31-50 A A B D B BADAC填空题1-5 正确答案 有穷性 log2n 对象 软件生命周期 关系模型6-10 Hello 16 -1 *sn pp*i pp/i …

android显示过程,Android 桌面加载图标过程分析

桌面应用图标流程前言本人工作上碰到这么一个需求,开发一款滤镜引擎,将桌面上所有的图标进行统一的滤镜化,这就需要了解一下整个桌面去取图标的过程,了解了整个过程,找到真正拿图标的地方,在真正取图标的地…

android开发者选项打开方式,打开、关闭安卓手机的开发者选项的方法详解

现在使用安卓手机的用户人群很多,大家都知道安卓手机中的“开发人员选项”吧,最近,有用户在问如何关闭或者打开开发者选项。那么小编今天就给大家带来一个打开、关闭安卓手机的开发者选项的方法,有需要的小伙伴赶紧来看看吧。打开…

android文件下载含服务器端,制作http/https文件共享服务器的Android下载管理器

我正在使用下载管理器的Android方下载来自不同来源的文件。现在我应该为这个应用程序创建一个服务器端。制作http/https文件共享服务器的Android下载管理器的一切都在这里首先是为Android端简单的代码:private DownloadManager mgr null;private long lastDownload…

zynq linux opencv效率,2 - 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

可以通过输入echo $PATH命令检查环境变量是否设置正确,如下图:可以,编译C文件进行测试,使用gedit在任意目录下编辑hello.c文件如图所示,保存后进入终端。以root身份进入到当前目录下,输入arm-xilinx-linux-…

android 单机斗地主,单机斗地主

单机斗地主是一款画面精美、特效绚丽、操作爽快的斗地主棋牌竞技游戏,拥有精美的界面,动感的音乐,简单的操作,为斗地主玩家提供了流畅而有节奏的游戏感觉。并且还拥有强大的AI以及智能的提示功能。电脑具有很高的人工智能&#xf…

android 判断空,Android空判断的坑

不知道大家判断一个字符串是否为空用的是不是TextUtils.isEmpty(String str);这个方法。过去我几乎每个判断都会使用。不过后来看了源码之后就再也不想用了,还不如自己写一个方法直接调用。下面是这个方法的源码,大家看看 ,估计看一眼就知道为…

android 无线视频,Android系统无线视频流媒体的接收、解码与播放

摘要:Android系统自问世以来就迅猛发展,并迅速占据着移动终端的主导地位。随着Android系统发展以及移动终端的应用需求的增长,Android平台的应用开发越来越丰富。Android系统的不断更新使得它更支持用户或程序员直接利用系统资源在应用层开发。然而,Android系统本身…

android t类型参数,数据绑定Android – 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity...

我正在使用Android Studio 2.0 Preview 4.我在使用Android SDK工具25 rc1.无论我清理/重建项目多少次,此错误仍然存​​在. File->无效缓存和重新启动也不起作用.我无法运行最基本的数据绑定示例.build.gradle文件apply plugin: com.android.applicationandroid {compileSdk…

android l 效果,[原]Android L中水波纹点击效果的实现

博主参加了2014 CSDN博客之星评选,帮我投一票吧。前言前段时间android L(android 5.0)出来了,界面上做了一些改动,主要是添加了若干动画和一些新的控件,相信大家对view的点击效果-水波纹很有印象吧,点击一个view&#…

android volume挂载流程,Android SDCard UnMounted 流程分析(一)

Android SDCard框架Android SDCard框架,我们修改一般涉及到四大模块Linux Kernel 用于检测热拔插,作为框架开发者来说,这者不用涉及Vold 作为Kernel 与 Framework 之间的桥梁Framework 操作Vold ,给Vold 下发操作命令UI 与Framework 交互&am…

天玑800处理器支持鸿蒙系统吗,骁龙750g和天玑800u哪个性能好 骁龙750g性能参数介绍...

高通骁龙750G处理器是一款中端入门级的5G处理器,主要使用在一些入门级的5G手机上,这和天玑800U的定位差不多,那么这两款处理器哪一个性能更强呢,我们来看下具体的参数对比介绍。1、骁龙750G参数性能:8nm制造工艺,Corte…

html全屏播放一段视频,显示HTML5视频全屏(Show HTML5 Video Fullscreen)

这对我的作品。我发现在使Web应用程序与VIMEO影片“怪癖解决方案”。 我测试了两种设备。 一个是Android的4.2.x版的版本,另一种是4.4.x到版本。 一个是能够以全屏模式播放视频,另一种是不能够。阅读正式文件“后的Android 4.4系统迁移到的WebView ”&am…

html表情选择器,原生JS写的emoji表情选择器

//生成表情window.onload function() {var face document.getElementById(‘face‘);for(var i 0; i < 38; i) {var a document.createElement("a");a.href "javascript:;";if(i < 10) {a.innerHTML ‘‘;}else{a.innerHTML ‘‘;}face.appendCh…

swf文件在线预览 html,在线浏览swf文件

项目中需要将PPT实现在线浏览的&#xff0c;在网上找了很多资料&#xff0c;大部分都倡导用&#xff0c;格式转为swf&#xff0c;这样的方法来实现在线浏览PPT。所以记录一下这块的代码&#xff1a;pageEncoding"UTF-8"%>html,body{ height:100%; }body { margin:…

layedit html源码编辑,Kz.layedit-layui.layedit富文本编辑器拓展

摘要&#xff1a;本插件基于layui.layedit,增加了html源码模式&#xff0c;片插入功能添加alt属性(layupload)&#xff0c;视频插入功能&#xff0c;全屏功能&#xff0c;段落格式&#xff0c;字体颜色设置&#xff0c;右键菜单操作&#xff0c;插入锚点&#xff0c;水平线功能…

计算机操作基础英语,计算机操作基础word练习题参考答案

《计算机操作基础》word练习题答案班别学号姓名一、判断题&#xff1a;1、( √) 用“插入”菜单中的“符号”命令可以插入符号和其他特殊字符。2、( √) WOR中D的工具栏可由用户根据需要显示或隐藏。3、( √) 对文本及图片都可以进行剪切、复制、粘贴操作。4、( √) 用“格式”…

3dmax里面cr材质转换vr材质_3DMAX零基础入门视频全套教程

3Dmax基础教程全套视频&#xff1a;点链接就行1.3dmax界面介绍2、3dmax主工具栏3、创建面板与修改面板4、时间轴与视口按钮5、3D视口讲解6、3dmax样条线界面7、CAD如何导入3dmax8、3DMAX绘制初步空间9、3DMAX导入图片与车削10、倒角和倒角剖面11、修改器堆栈|12、弯曲命令13、对…