首页 > 乐鑫提前批笔试
头像
Z.T.H
编辑于 2020-06-09 22:06
+ 关注

乐鑫提前批笔试

#乐鑫提前批笔试,第二题好气啊,忘了其中一个数据输入,结果死循环半天没发现,结束了复制到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;
}

全部评论

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

推荐话题

相关热帖

热门推荐