*2-1 OJ 254 翻煎饼
翻煎饼
- 题目描述
- 输入
- 输出
- 样例输入
- 样例输出
- 源代码
- 关于这题
题目描述
输入
输出
样例输入
样例输出
源代码
方法1
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define N 1001
using namespace std;int n, ans, a[N];
void change(int x)
{int l, r;ans++;l = r = x / 2;r++;if (x % 2 == 1) r++;while (l > 0) swap(a[l--], a[r++]);}int main(){int i, k;scanf("%d", &n);for (i = 1; i <= n; i++) scanf("%d", &a[i]);ans = 0;while (n > 1){k = 1;for (i = 2; i <= n; i++){if (a[k] < a[i]) k = i;}if (k != n){if (k > 1) change(k);change(n);}n--;}printf("%d\n", ans);return 0;}
方法2
#include<stdio.h>
#include<stdlib.h>
int a[1002]={0};
bool flag=true;//是否满足非从小到大排序
int dex=0;//已经排好位置的数量
int conut=0;//最大值下标
int ans=0; //翻转次数
void print(int n){for(int i=1;i<=n;i++){printf("%d ",a[i]);}printf("\n");
}
void juge(int n){int flag1=0 ;for(int i=1;i<=n-1;i++){if(a[i]>a[i+1]){flag=true;flag1++;}}if(flag1==0){flag=false;}}
void turn(int n){//翻转函数//翻转第一次int low=1,high=conut;if(conut!=1){//最上面和不用翻转while(low<=high){int temp=a[low];a[low]=a[high];a[high]=temp;low++;high--; }
// print(n) ans++;}juge(n);//判断是否从小到大有序if(flag==false){return ;}//翻转第二次 low=1,high=n-dex;while(low<=high){int temp=a[low];a[low]=a[high];a[high]=temp;low++;high--;}
// print(n);ans++;juge(n);//判断是否从小到大有序 dex++;
}
void find(int n){//查找元素 int max=-1;for(int i=1;i<=n-dex;i++){if(a[i]>=max){max=a[i];conut=i;}}if(conut==n-dex){//目前位置已经是最大位置 dex++;find(n); }else return ;
}
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}juge(n);//判断是否从小到大有序 防止BUG while(flag&&dex!=n-1){find(n);turn(n);}printf("%d\n",ans);
}
关于这题
这里解释一下第一种方法
思路:先找到一个最大的数 把他移到最前面 再翻转
此时最大的数已经到了末尾 我们就不再处理他 看前面的元素
即处理子数列问题
注:我们要单独去判断 最大的数是不是就是最后一个 不然会出BUG
这里ans 和 数组 我们设立的是全局变量 因为在函数里也要用到
l 和 r 是判断数组位置的 左标和 右标 当 x%2==1时 右标要加一 (不要标记成中间的数了)
*2-1 OJ 254 翻煎饼相关推荐
- SWUST OJ 254: 翻煎饼
标题254: 翻煎饼 题目描述 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼 ...
- SWUST oj 254: 翻煎饼
题目描述 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整齐的叠在了一起. 这 ...
- swust oj 254 翻煎饼
题目描述 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整齐的叠在了一起. 这 ...
- SWUSTOJ #254 翻煎饼
SWUSTOJ #254 翻煎饼 题目 输入 输出 样例输入 样例输出 源代码 题目 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的 ...
- 刘小白第一个博文——算法分析(翻煎饼)
标题254 翻煎饼 题目描述 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整 ...
- 翻煎饼问题swust oj~~~254
翻煎饼 1000(ms) 65535(kb) 2001 / 7227 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在 ...
- 翻煎饼 swustoj 254
题目描述: 麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟.最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整齐的叠在了一起. ...
- c语言煎饼问题算法,翻煎饼问题(示例代码)
输入 输入包括两行,第一行是一个整数n(1<=n<=1000),表示煎饼的个数,接下来的一行有n个不相同的整数,整数间用空格隔开,每个整数表示煎饼的大小(直径),左边表示顶部,右边表示底部 ...
- 【蓝桥备考-每周一题5】翻煎饼(栈的翻转)★
一:问题 问题描述: 堆栈和队列通常被认为是数据结构的面包和黄油,可用于体系结构.解析,操作系统和离散事件模拟.堆栈在形式语言理论中也很重要.现在的问题涉及黄油和煎饼(而不是面包),同时还有一个根据唯 ...
最新文章
- Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
- 【转】centos安装vim7.4(转)
- iOS WebView 加载本地资源(图片,文件等)
- 《Python Cookbook 3rd》笔记(3.13):计算最后一个周五的日期
- 【linux】linux系统中常见配置文件及目录说明
- MiniDao支持ID自增主键策略,使用讲解
- html请求接口_软件测试学习教程——LoadRunner实现接口测试
- Bailian2790 迷宫【DFS】
- 不知道这十项Linux常识,就别说自己玩过Linux!
- 题-芭芭拉冲鸭~(续)(LCA最近公共祖先)
- 腾跃英语计算机学院微信公众号,英语四级报名_微信还能这么玩:Geek大学生搭建英语课堂互动系统_沪江英语...
- mp2555sp文件服务器,理光mp2555sp驱动
- HCRM医院客户管理系统
- JavaSE笔记 30天学Java打卡 Day03
- Electron渲染进程与主进程进行通信
- iMeta | 复杂热图(ComplexHeatmap)可视化文章最新版,画热图就引它
- python中的矩阵分块
- contenteditable H5聊天室发送表情
- 24张神GIF动图:数学概念这么酷!
- 免费版的mp3格式转换器有哪些?这三款软件帮你实现!