题解 | #Flipping Pancake#

Flipping Pancake

https://www.nowcoder.com/practice/ff6100747612420dadf799810b56bf27

#include <iostream>
#include <vector>
using namespace std;
int n;
int a[35];
int main() {
    while (cin >> n && n) {
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        int cnt = 0, num = n;
        vector<int>ans;
        while (num > 1) {
            int maxn = 0, maxx = 0;
            for (int i = 1; i <= num; i++) {
                if (a[i] > maxx) {
                    maxx = a[i];
                    maxn = i;
                }
            }
            if(maxn == num)
            {
                num--;
                continue;
            }
            if (maxn == 1) {
                ans.push_back(num);
                for (int i = 1, j = num; i <= j; i++, j--) {
                    swap(a[i], a[j]);
                }
                cnt++;
            } else {
                ans.push_back(maxn);
                ans.push_back(num);
                for (int i = 1, j = maxn; i <= j; i++, j--) {
                    swap(a[i], a[j]);
                }
                for (int i = 1, j = num; i <= j; i++, j--) {
                    swap(a[i], a[j]);
                }
                cnt += 2;
            }
            num--;
        }
        cout << cnt;
        for (int i = 0; i < ans.size(); i++)
            cout << " " << ans[i];
        cout << endl;
    }
}

全部评论

相关推荐

ResourceUtilization:差不多但是估计不够准确,一面没考虑到增长人口,另一方面也没考虑到能上大学的人数比例,不过我猜肯定只多不少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务