乐鑫提前批笔试

#乐鑫提前批笔试,第二题好气啊,忘了其中一个数据输入,结果死循环半天没发现,结束了复制到ide上才发现,被自己蠢哭了。。。
贴个代码,不知道对不对,可以讨论下
输入 :
第1行项目个数 n
后n行:n各项目需要的时间 ti
后面1行 :关联数目m
面m行 :每行都是两个数 qi,hi,项目qi完成了之后,项目hi才能进行
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        vector<int> ti;   //存储还需要的时间
        int temp;
        for (int i = 0; i < n; i++) {
            cin >> temp;
            ti.push_back(temp);
        }
        vector<vector<int>> link(n);  //用于储存关联porject
        int m;
        cin >> m;
        for (int i = 0; i < m; i++) {
            int qi, hi;
            cin >> qi >> hi;
            link[hi].push_back(qi);
        }
        int ans = 0; //储存时间
        while (count(ti.begin(), ti.end(), 0) != n)   //每次循环,能进行的项目时间全部减一,全部时间为0,则退出循环
        {
            ans++; //time +1;
            vector<int> ti_tmep(ti.begin(), ti.end());
            for (int i = 0; i < n; i++) {
                int j = 0;
                for (j = 0; j < link[i].size(); j++)       //看关联项目是否完成
                {
                    if (ti_tmep[link[i][j]] != 0) {     //关联的项目是否完成
                        break;
                    }
                }
                if (j == link[i].size() && ti[i] != 0) ti[i]--;
            }

        }
        cout << ans;

    }
    return 0;
}

#乐鑫提前批笔试##C/C++#
全部评论
给每个任务维护一个(完成所有前置任务的)最快时间,然后拓扑排序,取出一个点后更新这个点指向的其他任务的最快时间
1 回复 分享
发布于 2020-06-12 12:26
乐鑫是几个题多长时间啊
1 回复 分享
发布于 2020-06-29 19:14
lz第一题过了吗,我第二题直接输入输出测试用例过了20
点赞 回复 分享
发布于 2020-06-09 22:07
脱离 ide 的帮助,很考基本功啊🤣
点赞 回复 分享
发布于 2020-06-09 22:07
第二道题不应该用入度表来做么  你这个第二题能通过题目给的实例么
点赞 回复 分享
发布于 2020-06-11 20:55
做题界面有个自测功能是可以看到程序运行错误信息的。
点赞 回复 分享
发布于 2020-06-11 21:58
LZ,这个可以用本地编辑器 ?
点赞 回复 分享
发布于 2020-06-29 22:44
请问笔试时长是两小时吗
点赞 回复 分享
发布于 2020-07-07 16:20
楼主最后面试流程咋样呀
点赞 回复 分享
发布于 2020-07-15 01:23
我 两个编程题 一个都没写出来 还让我面试了  但是我不想去嵌入式 。。。
点赞 回复 分享
发布于 2021-07-19 16:20

相关推荐

5 5 评论
分享
牛客网
牛客企业服务