//第一题DFS思路,空间还能优化,没提交,不知道对不对 #include <iostream> #include <vector> using namespace std; int n; int res; void dfs(vector<vector<int>>& friends, int x, int y,vector<vector<bool>>& mark){ if(x >= friends.size() || y >= friends[0].size() || x < 0 || y < 0) return; if(mark[x][y] == true) return; if(friends[x][y] == 0){ mark[x][y] = true; return; } // 对于已经搜索过的点要进行标记 mark[x][y] = true; res--; for(int j=1; j<n; j++){ dfs(friends, x, j, mark); } } void minM(vector<vector<int>>& friends) { if(friends.empty()) return; res = n; vector<vector<bool>> vecMark(friends.size(),vector<bool>(friends[0].size(),false));// 定义标记数组 //开始搜索 for(int i = 1;i < friends.size();i++){ for(int j = 1;j < friends[0].size();j++){ if(vecMark[i][j] == true) continue; if(friends[i][j] == 0){ vecMark[i][j] = true; continue; } dfs(friends, i, j, vecMark); } } cout << num << endl; } int main() { cin >> n; vector<vector<int>> friends(n+1, vector<int>(n+1,0)); int temp = 0; for(int i=1; i<=n; i++){ int j = 1; while(cin>>temp){ if(temp == 0) break; friends[i][j] = temp; j++; } } minM(friends); return 0; }
点赞 评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
牛客网
牛客企业服务