江苏电信代码题题解

1、简单做的是节日礼物

简单模拟即可,代码如下 100%

#include <bits/stdc++.h>

using namespace std;

int main(){
    string s;
    vector<int> v;
    while(cin >> s){
        auto n = stoi(s);
        v.push_back(n);
        char c = cin.get();
        if (c == '\n') {
            break;  
        }
    }
    int mn = 1e9;
    for(int i = 0;i < v.size(); i++){
        int sum = 0;
        for(int j = 0;j < v.size(); j++){
            if(v[j] >= v[i]) sum += v[j] - v[i];
            else sum += v[j];
        }
        mn = min(mn,sum);
    }
    cout << mn << endl;
    return 0;
}

2、中等做的是bug题 100%

dfs即可

代码如下:

#include <iostream>
using namespace std;

void dfs(int n,int t,int &mn){
    if(t > mn) return;
    if(n == 1){
        mn = min(mn,t + 1);
        return;
    }
    if(n) dfs(n - 1,t + 1,mn);
    if(n%2 == 0) dfs(n/2,t + 1,mn);
    if(n%3 == 0) dfs(n/3,t + 1,mn);
}

int main() {
    int n;
    cin >> n;
    int mn = 1e9;
    dfs(n,0,mn);
    cout << mn << endl;
    return 0;
}

3、难题做的是求方案数量 全部通过得分0%

使用了位运算:

感觉这题提交有bug,不管提交什么都是用例通过,得分0%,按理说复杂度有点高也只是超时。

代码如下:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n,m,l;
    cin >> n >> m >> l;
    vector<int> g(l),p(l);
    for(int i = 0;i < l; i++) scanf("%d",&g[i]);
    for(int i = 0;i < l; i++) scanf("%d",&p[i]);
    int a = pow(2,l),res = 0;
    for(int i = 1; i < a; i++) {
        int now = 0,x = 0;
        for(int j = 0;j < l; j++) if(i >> j & 1) x += g[j],now += p[j];
        if(x <= n && now >= m) {
            res++;
        }
    }
    cout << res << endl;
    return 0;
}

全部评论
bug题能用dp写吗?我用dp写的,但是提交不了。看不到结果😤
2 回复 分享
发布于 2023-09-16 13:50 江苏
前面的计算机基础都会吗,我一大半都是瞎选编程a2题,前面行测60主要是一些常识和言语题不太确定
点赞 回复 分享
发布于 2023-09-16 14:21 江苏
都笔试了嘛
点赞 回复 分享
发布于 2023-09-18 11:59 江苏

相关推荐

点赞 评论 收藏
分享
想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
5 43 评论
分享
牛客网
牛客企业服务