首页 > 9.17 网易互娱游戏开发编程(CPP版本)
头像
南七技校
发布于 2021-09-18 18:20
+ 关注

9.17 网易互娱游戏开发编程(CPP版本)

1. 易数(自测没问题,通过0%)
#include <bits/stdc++.h>

using namespace std;

int main () {
    int T;
    cin >> T;
    for (int i = 0; i < T; i++) {
        string X;
        cin >> X;
        vector<int> A;
        bool begin = true;
        for (int i = X.size() - 1; i >=0; i--) {
            int cur = X[i] - '0';
            while (cur > 0) {
                int a = cur % 2;
                if (begin && a != 0) {
                    begin = false;
                } 
                if (!begin) A.push_back(a);
                cur /= 2;
            }
        }
        string C = "1";
        //只需要记录第一个元素以及翻转的次数就行了
        if (A.size() > 1) {
            for (int i = 1; i < A.size(); i++) {
                if (C[C.size() - 1] - '0' != A[i]) {
                    C += A[i] + '0';
                }
            }
        }
        cout << C << endl;
    }
    return 0;
}
2.求多少人互相看不见(40%,看看别人的解法吧)
#include <bits/stdc++.h>

using namespace std;

int main () {
    int T;
    cin >> T;
    for (int p = 0; p < T; p++) {
        int N,M;
        cin >> N >> M;
        vector<int> H;
        for (int i = 0; i < N; i++) {
            int temp;
            cin >> temp;
            H.push_back(temp);
        }
        //峰谷法,开始默认下降,结束默认上升
        bool rise = false;
        vector<int> topIdx, botIdx;
        for (int i = 0; i < N - 1; i++) {
            if (H[i] > H[i + 1]) {
                if (rise == true) {
                    rise = false;
                    //i为峰值
                    topIdx.push_back(i);
                }
            } else if (H[i] < H[i + 1]) {
                if (rise == false) {
                    rise = true;
                    //i为谷值
                    botIdx.push_back(i);
                }
            }
        }
        if (rise == false) botIdx.push_back(N - 1);
        int ret = botIdx.size() - 1;
        if (topIdx.size() > 1) {
            for (int i = 0; i < topIdx.size() - 1; i++) {
                if (topIdx[i] <= M - 1 && M - 1 <= topIdx[i + 1]) {
                    if (topIdx[i] == M - 1 || M - 1 == topIdx[i + 1]) {
                        ret--;
                        break;
                    }
                    if (H[topIdx[i]] == H[M - 1] || H[M - 1] == H[topIdx[i + 1]]) {
                        ret--;
                        break;
                    }
                }
            }
        }
        cout << max(0, ret) << endl;
    }
    return 0;
}
3.不会


全部评论

(1) 回帖
加载中...
话题 回帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐