阿里笔试第三题

描述 
在某个工厂的生成一件产品(A,B, C, …)。其中产品A依赖于半成品和原料(E, F, g…)。其中半成品B又依赖于 其它的半成品或原料(H, I, …)。现在发现原料x发生质量问题,所以由原料x制成的半成品或产品以及直接或间接依赖这些半成品的生成物都要销毁掉。请设计一个C++数据结构来描述这些原料,半成品和最终产品的依赖关系,能够满足以下两个常用请求的速度要求。 
一:指定的产品A,列出它所需要的原料列表A - Set。 
二:并且给出指定的原料x发生质量问题的所有需要销毁的半成品或产品的列表。

答案:

#阿里巴巴#
全部评论
看了一下题目 拓扑排序
点赞 回复 分享
发布于 2016-04-20 22:44
拓扑排序应该可以解决?
点赞 回复 分享
发布于 2016-04-20 22:08
我是用的类似双向链表每次递归去找: 欢迎大家讨论下: struct Product{     int val; //产品id     vector<Product *> next; //指向所需要的原料     vector<Product *> front; //指向构成的产品     Product(int a):val(a){};     }; 找ASet void recursion(Product *A,vector<int> &ASet){     if((A->next).size()==0)         return;     vector<Product *> temp = A->next;     for(int i=0; i<A->next.size(); ++i){           ASet.push_back((A->next[i])->val);           recursion((A->next)[i],ASet);    } }
点赞 回复 分享
发布于 2016-04-20 22:04
读完题觉得应该是考虑设计一个数据结构保存一个有向图,使得能够满足题目中的给出的两个操作。 仅供参考 struct edge { int start; int end; } vector<edge> table;
点赞 回复 分享
发布于 2016-04-20 21:55

相关推荐

程序员花海:实习太简单了 学历可以的 实习描述应该是先介绍业务 再介绍技术 技术咋推动业务的 做到了啥收益 有没有做实验 实验组和对照组有什么不同 你最后学到了什么 有没有参与处理过线上问题 有没有参与过公司的code review 有没有参与过技术分享 这些都是可以在实习描述中写的 并且实习和项目不一样不会撞车 应该放在最前面 放在教育背景下面 另外项目有点烂大街 可以看下我主页的简历优化案例
点赞 评论 收藏
分享
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务