本文主要是介绍UVA/8-1 120 - Stacks of Flapjacks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
翻滚煎饼
运用一个选择排序法,先选择好最大的放在最下方,然后再处理上方的循环处理,直到将所有的煎饼排好
#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;int n,a[55];void file(int p){for(int i=0;2*i<p;i++)//此处不能是i<p/2,将所有的煎饼上下颠倒,对称交换swap(a[i],a[p-i]);printf("%d ",n-p);
}int main(){string s;while(getline(cin,s)){cout << s << endl;stringstream ss(s);n=0;int num;while(ss >> num) a[n++]=num;for(int i=n-1;i>0;i--){ //倒序寻找当前最大数,选择n-1次int p=max_element(a,a+i+1)-a; //当前排序范围内最大数的坐标if(i==p) continue; //已在正确位置就跳过if(p>0) file(p);//如果最大数不是第一个就翻一次 把它翻到最上面file(i);//将当前找到的最大数由最上方翻到它应在是位置}printf("0\n");}return 0;
}
这篇关于UVA/8-1 120 - Stacks of Flapjacks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!