Course Schedule
2015-06-09 09:40
651 查看
There are a total of n courses you have to take, labeled from
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair:
Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?
For example:
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.
There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.
找是否存在环,用深搜。不难,但因为数组越界debug了好久。吸取到一个教训,为方便debug以后在可能存在越界的地方加上断言。
0to
n - 1.
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair:
[0,1]
Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?
For example:
2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.
2, [[1,0],[0,1]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.
找是否存在环,用深搜。不难,但因为数组越界debug了好久。吸取到一个教训,为方便debug以后在可能存在越界的地方加上断言。
class Solution { public: int *visit; bool isCircle; void isExistCircle(vector<vector<int> > &a,int i) { if(visit[i] == 1 || isCircle) return; visit[i] = -1; for(int j = 0;j<a[i].size();++j) { if(visit[a[i][j]] == -1){ isCircle = true; return; } isExistCircle(a,a[i][j]); } visit[i] = 1; } bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { if(numCourses == 0) return true; vector<vector<int> > a(numCourses,vector<int>()); visit = new int[numCourses]; memset(visit,0,numCourses*sizeof(int)); isCircle = false; for(int i=0;i<prerequisites.size();++i) { a[prerequisites[i].first].push_back(prerequisites[i].second); } for(int i=0;i<numCourses;++i) isExistCircle(a,i); delete []visit; return !isCircle; } };
相关文章推荐
- 【EPI-6.6】最长连续递增子序列-启发式搜索
- CentOS7 上源码安装KVM(qemu--kvm)
- 相关分析和回归分析
- OpenSLL之建立私有CA
- Thinking in Java 第四章、第五章
- Path Sum II
- 数据表字段属性查询
- centos下 iftop安装
- 页面向下滚动ajax获取数据,兼容手机
- 隐马尔科夫学习五(四)
- MBProgressHUD等待指示器
- Dialog显示在Activity不同的位置
- lambda表达式
- Linux-VMware三种网络模式
- JS回到顶部按钮
- 有一牧场,已知养牛27头,6天把草吃尽;养牛23头,9天把草吃尽。如果养牛21头,那么几天能把牧场上的草吃尽呢?并且牧场上的草是不断生长的。
- 【Web Service】REST vs SOAP
- 元数据元素
- osg实例介绍
- 微软发布Windows 10新预览版任务栏弹出问题修复