dede 网站地图 模块,科技 响应式网站模板下载,如何申请网站域名,企业网查询天眼查递归函数易错#xff1a;
防止出现递归死循环#xff01;
题目 题目#xff1a;求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵#xff0c;求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n#xff0c;表示矩阵为n阶方阵#xff0c…递归函数易错
防止出现递归死循环
题目 题目求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n表示矩阵为n阶方阵第二行给出关系矩阵 输出格式 诱导出的等价关系的关系矩阵 样例输入 样例1 3 1 0 0 0 0 0 0 0 1 样例2 3 1 1 1 0 0 0 0 0 1 样例输出 样例1 1 0 0 0 1 0 0 0 1 样例2 1 1 1 1 1 1 1 1 1 代码实现
#includebits/stdc.h
using namespace std;int main()
{int n; cinn;vectorvectorintgraph(n, vectorint(n, 0)); for(int i 0; i n; i){for(int j 0; j n; j){//对称性int cur graph[i][j]; if(cur 1) cincur; else cingraph[i][j];if(graph[i][j] 1){graph[j][i] 1;}//自反性if(i j) graph[i][j] 1;}}//传递性setintst; auto dfs [](auto dfs, int fa, int cur) - void{for(int i0; in; i){if(cur ! i graph[cur][i] 1){if(!st.count(i))//防止在两个关联项之间死循环递归{graph[fa][i] 1;graph[i][fa] 1;st.insert(i);dfs(dfs, fa, i);}}} return; };//调用递归时间 for(int i0; in; i){st.insert(i);dfs(dfs, i, i);st.clear();}//输出for(int i0; in; i){for(int j 0; j n; j){coutgraph[i][j] ;}coutendl;} return 0;
}