首页 > 代码库 > 翻煎饼(swust oj 0254)
翻煎饼(swust oj 0254)
Description:http://acm.swust.edu.cn/problem/0254/
解题思路:先找出最大的煎饼,先翻转到最上面,最后翻转到最下层
AC代码:
#include<stdio.h>int time=0;int digit[1000];void turn(int a,int b)//翻煎饼{ int i=a,j=b; while(i<j){ int t=digit[i]; digit[i]=digit[j]; digit[j]=t; i++; j--; } time++;//次数加一}int Findmax(int a,int b)//找到最大元素的脚标{ int max,i; max=a; for(i=a+1;i<=b;i++) if(digit[i]>digit[max]) max=i; return max;}void change(int y)//先找出最大的数,先翻转到最上面,在翻转到最下层{ if(y==0) return; int maxn=Findmax(0,y); if(maxn!=0&&maxn!=y){ turn(0,maxn); turn(0,y); } else if(maxn==0) turn(0,y); change(y-1);}int main(){ int N; scanf("%d",&N); int i; for(i=0;i<N;i++) scanf("%d",&digit[i]); change(N-1); printf("%d\n",time);// for(i=0;i<N;i++) // printf("%d ",digit[i]); return 0;}
翻煎饼(swust oj 0254)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。