校招笔试代码题记录

image.png
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<int> number;
    vector<char> charter;
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int temp;
        char c;
        cin >> temp;
        number.push_back(temp);
        if (i != n - 1) {
            cin >> c;
            charter.push_back(c);
        }
    }

    int k = 0;
    for (int i = 0; i < n - 1; ++i) {
        if ((charter[i] == '+')) {
            if ((NULL == charter[i + 1]) && NULL == (charter[i - 1]) ||
                ((NULL == charter[i + 1]) && (charter[i - 1] == '+'))) {
                sort(number.begin() + k, number.begin() + i + 2);
            } else if ('+' == charter[i + 1]) {
                continue;
            } else if ('-' == charter[i + 1]) {
                if (NULL == charter[i - 1]) {
                    sort(number.begin() + k, number.begin() + i + 2);
                    k = i + 1;
                    continue;
                } else if ('/' != charter[i - 1] && '*' != charter[i - 1]) {
                    sort(number.begin() + k, number.begin() + i + 2);
                    k = i + 1;
                }
            } else if (('/' == charter[i + 1]) || ('*' == charter[i + 1]) && ('+' == charter[i - 1])) {
                sort(number.begin() + k, number.begin() + i + 1);
                k = i + 1;
            } else
                k = i + 1;

        } else if (charter[i] == '-') {
            if ((NULL == charter[i + 1]) && ('-' == charter[i - 1])) {
                sort(number.begin() + k + 1, number.begin() + i + 2);
            } else if ('-' == charter[i + 1]) {
                continue;
            } else if ('+' == charter[i + 1] && '-' == charter[i - 1]) {
                sort(number.begin() + k + 1, number.begin() + i + 2);
                k = i + 1;
            } else if (((charter[i + 1] == '/') || (charter[i + 1] == '*')) && '-' == charter[i - 1]) {
                sort(number.begin() + k + 1, number.begin() + i + 1);
                k = i + 1;
            } else
                k = i + 1;

        } else if (charter[i] == '*') {
            if ((NULL == charter[i + 1]) && NULL == (charter[i - 1]) || NULL == charter[i + 1]) {
                sort(number.begin() + k, number.begin() + i + 2);
            } else if ('*' == charter[i + 1]) {
                continue;
            } else if ('/' == charter[i + 1]) {
                sort(number.begin() + k, number.begin() + i + 2);
                k = i + 1;
            } else if ((charter[i + 1] == '+') || (charter[i + 1] == '-')) {
                sort(number.begin() + k, number.begin() + i + 2);
                k = i + 1;
            }

        } else if (charter[i] == '/') {
            if ((NULL == charter[i + 1]) && ('/' == charter[i - 1])) {
                sort(number.begin() + k, number.begin() + i + 2);
            } else if ('/' == charter[i + 1]) {
                continue;
            } else if ('*' == charter[i + 1] && ('/' == charter[i - 1])) {
                sort(number.begin() + k, number.begin() + i + 2);
                k = i + 1;
            } else if ((('+' == charter[i + 1]) || ('-' == charter[i + 1])) && ('/' == charter[i - 1])) {
                sort(number.begin() + k, number.begin() + i + 2);
                k = i + 1;
            } else
                k = i + 1;

        }
    }

    for (int i = 0; i < n; ++i) {
        cout << number[i] << ' ';
        if (i != n - 1) {
            cout << charter[i] << ' ';
        }
    }
    return 0;
}
image.png

image.png
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
        int n, k;
    cin>> n>> k;
    vector<int>a;
    int count=0;
    for (int i = 0; i < n; ++i) {
        int temp;cin>>temp;
        if ( temp % 3 == 0 ){
            count++;
        }
        else
            a.push_back(temp);
    }
    for (int i = 0; k && (i < a.size()); ++i) {
        for (int j = i+1; j < a.size(); ++j) {
            if ((a[i]+a[j]) % 3 == 0){
                a.erase(a.begin()+i);
                a.erase(a.begin()+j);
                if(k--)
                    count++;
            }
        }
        
    }
    for (int i = 0; k && (i < a.size()); ++i) {
        for (int j = i + 1; j < a.size(); ++j) {
            for (int t = j + 1; t < a.size(); ++t) {
                if ((a[i] + a[j]+ a[k]) % 3 == 0) {
                    a.erase(a.begin() + i);
                    a.erase(a.begin() + j);
                    a.erase(a.begin() + t);
                    k=k-2;
                    if(k)
                        count++;
                }
            }

        }
    }
    cout << count << endl;
    return 0;
}
image.png

image.png
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
long long functionsum(long long n, int a ,int b ,int c, int f0 ){
    if(n < 0 ){
        return 0;
    }
    else if(n == 0){
        return f0;
    }
    else
        return a*functionsum(n-1, a , b ,c, f0) + b*functionsum(n-2, a , b ,c, f0)+c*functionsum(n-3, a , b ,c, f0)+2*n*n-n+32767;

}

int main() {
    long long n;
    int a ,b,c, f0;
    cin>>n>>a>>b>>c>>f0;
    cout<<functionsum(n,a,b,c,f0);
    return 0;
}
image.png

image.png

image.png
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void markMatrix(vector<vector<int>> &label, vector<vector<int>> &mark, int x, int y, int n, int m) {
    if (x < 0 || y < 0 || x > n || y > m)
        return;
    if ((label[x][y] == 'X') || (mark[x][y] == 1))
        return;
    else {

        mark[x][y] = 1;

        if ((x - 1 >= 0) && (label[x - 1][y] == '.') && (!(mark[x - 1][y]) == 1))
            markMatrix(label, mark, x - 1, y, n, m);
        if ((y - 1 >= 0) && (label[x][y - 1] == '.') && (!(mark[x][y - 1]) == 1))
            markMatrix(label, mark, x, y - 1, n, m);
        if ((y + 1 <= m) && (label[x][y + 1] == '.') && (!(mark[x][y + 1]) == 1))
            markMatrix(label, mark, x, y + 1, n, m);
        if ((x + 1 <= n) && (label[x + 1][y] == '.') && (!(mark[x + 1][y]) == 1))
            markMatrix(label, mark, x + 1, y, n, m);
    }
}
int main() {
    int t;
    cin >> t;
    while (t--) {
        int n, m;
        int x1, y1, x2, y2;
        cin >> n >> m;
        vector<vector<int>> label(n, vector<int>(m));
        vector<vector<int>> mark(n, vector<int>(m));
        char c;
        for (int i = 0; i < n; ++i) {
            getchar();
            for (int j = 0; j < m; ++j) {
                cin >> c;
                label[i][j] = int(c);
            }
        }
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                mark[i][j] = 0;
            }
        }
        cin >> x1 >> y1;
        cin >> x2 >> y2;
        if ((x1 == x2) && (y1 == y2)) {
            cout << "YES" << endl;
        } else {
            mark[x1 - 1][y1 - 1] = 2;
            label[x1 - 1][y1 - 1] = 'O';
            markMatrix(label, mark, x1 - 1, y1 - 1, n - 1, m - 1);

            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < m; ++j) {
                    cout << mark[i][j];
                }
                cout << endl;
            }

            if (mark[x2 - 1][y2 - 1]){
                cout << "YES" << endl;
            }
            else
                cout << "NO" << endl;
        }
    }
    return 0;
}
image.png

image.png
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    int n, m;
    vector<int> w;
    vector<int> v;
    cin >> n >> m;
    int temp = 0;
    for (int i = 0; i < n; i++) {
        cin >> temp;
        w.push_back(temp);
    }
    for (int i = 0; i < n; i++) {
        cin >> temp;
        v.push_back(temp);
    }
    int count = *min_element(w.begin(), w.end());
    int remin_money = m;
    while (remin_money >= 0) {
        int min = *min_element(w.begin(), w.end());
        for (int i = 0; i < n; i++) {
            if (w[i] == min) {
                remin_money = remin_money - v[i];
                w[i] = w[i] + 1;
            }
        }
        if (remin_money >= 0) count++;
    }
    cout << count << endl;
}
image.png

image.png
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int n,m,k;
    vector<int> people;
    vector<int> language;

    cin>>n>>m>>k;
    for (int i = 0; i < k; ++i) {
        int tempp,templ;
        cin>>tempp>>templ;
        people.push_back(tempp);
        language.push_back(templ);
    }

    sort(language.begin(),language.end());
    language.erase(unique(language.begin(),language.end()),language.end());
    sort(people.begin(),people.end());
    people.erase(unique(people.begin(),people.end()),people.end());

    cout<<language.size()-1 + n-people.size();

    return 0;
}
image.png
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int max(int a, int b) {
    return a > b ? a : b;
}

int main() {
    int i, k;
    vector<int> array;
    int temp;
    cin >> temp;
    array.push_back(temp);
    while (cin.get() != '\n') {
        cin >> temp;
        array.push_back(temp);
    }
    vector<int> dp(array.size());
    dp[0] = array[0];
    for (i = 1; i < array.size(); ++i) {
        dp[i] = max(array[i], dp[i - 1] + array[i]);
    }
    k = dp[0];
    for (i = 1; i < array.size(); ++i) {
        if (dp[i] > k) {
            k = dp[i];
        }
    }
    cout << k << endl;

    return 0;
}
image.png
//方法1
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int maxProfit(const vector<int> prices) {
    if (prices.empty())
        return 0;
    int buy1 = -prices[0], sell1 = 0, buy2 = buy1, sell2 = 0;
    for (int i = 1; i < prices.size(); ++i) {
        buy1 = max(buy1, -prices[i]);
        sell1 = max(sell1, buy1 + prices[i]);
        buy2 = max(buy2, sell1 - prices[i]);
        sell2 = max(sell2, buy2 + prices[i]);
    }
    return max(0, sell2);
}

int main() {
    vector<int> prices = {2, 1, 5, 0, 2, 3, 1, 4};
    cout << maxProfit(prices) << endl;
    return 0;
}

//方法2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    vector<int> prices = {2, 1, 5, 0, 2, 3, 1, 4};
    vector<int> pre(prices.size());
    vector<int> post(prices.size());

    pre[0] = 0;
    int min_price = prices[0];
    for (int i = 1; i < prices.size(); ++i) {
        pre[i] = max(pre[i - 1], prices[i] - min_price);
        min_price = min_price > prices[i] ? prices[i] : min_price;
    }

    post[prices.size() - 1] = 0;
    int max_price = prices[prices.size() - 1];
    for (int i = prices.size() - 2; i >= 0; i--) {
        post[i] = max(post[i + 1], max_price - prices[i]);
        max_price = max_price < prices[i] ? prices[i] : max_price;
    }

    int max_profit = pre[0] + post[prices.size() - 1];
    for (int i = 1; i < prices.size() - 1; ++i) {
        max_profit = max(pre[i] + post[prices.size() - i - 1], max_profit);
    }

    cout << max_profit << endl;
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容