本文主要是介绍牛客网考研机试题集合:Flipping Pancake,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
考点:排序
通过翻转操作对1~N进行排序
思路:见题目备注
#include<bits/stdc++.h>
using namespace std;
const int MAXSIZE=1001;int main() {int n;while(cin>>n) {if(n==0) {break;}int a[n+1];for(int i=1; i<=n; i++) {cin>>a[i];}int p,ans=0;vector<int> v;for(int j=n; j>=2; j--) {for(int i=1; i<=n; i++) {if(a[i]==j) {p=i;break;}}if(p==j) {continue;} else if(p==1) {reverse(a+1,a+j+1);v.push_back(j);ans++;} else {reverse(a+1,a+p+1);v.push_back(p);ans++;reverse(a+1,a+j+1);v.push_back(j);ans++;}}cout<<ans;for(int i=0; i<v.size(); i++) {cout<<" "<<v[i];}cout<<endl;}return 0;
}
这篇关于牛客网考研机试题集合:Flipping Pancake的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!