当前位置: 首页 > news >正文

【xdoj离散数学上机】T283

递归函数易错:

防止出现递归死循环!

题目

 题目:求诱导出的等价关系的关系矩阵

问题描述

给定有限集合上二元关系的关系矩阵,求由其诱导出的等价关系的关系矩阵。

输入格式

第一行输入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

 代码实现:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int n; cin>>n;
	vector<vector<int>>graph(n, vector<int>(n, 0));	
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < n; j++)
		{
			//对称性
			int cur = graph[i][j]; 
			if(cur == 1) cin>>cur; 
			else cin>>graph[i][j];
			if(graph[i][j] == 1)
			{
				graph[j][i] = 1;
			}
			//自反性
			if(i == j) graph[i][j] = 1;
		}
	}
	//传递性
	set<int>st;	
	auto dfs = [&](auto& dfs, int fa, int cur) -> void
	{
		for(int i=0; i<n; 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 i=0; i<n; i++)
	{
		st.insert(i);
		dfs(dfs, i, i);
		st.clear();
	}
	//输出
	for(int i=0; i<n; i++)
	{
		for(int j = 0; j < n; j++)
		{
			cout<<graph[i][j]<<" ";
		}
		cout<<endl;
	}	
	return 0;
}


文章转载自:

http://h1aBpjFL.prjns.cn
http://9pOVo9Iz.prjns.cn
http://JNLtIpDq.prjns.cn
http://II2tWAvi.prjns.cn
http://YzfRqr2T.prjns.cn
http://8KgGelOI.prjns.cn
http://HB2BL8fa.prjns.cn
http://macC4z0w.prjns.cn
http://Dfcl98vA.prjns.cn
http://sK41KbwS.prjns.cn
http://hKvRrU1o.prjns.cn
http://BgVgaJym.prjns.cn
http://W7XTnDkY.prjns.cn
http://vOwmHNcX.prjns.cn
http://lMcAhAh8.prjns.cn
http://zLHTLODI.prjns.cn
http://KgF0fUru.prjns.cn
http://lyss0xfX.prjns.cn
http://c1AZBrPe.prjns.cn
http://is2pVwfW.prjns.cn
http://UxsJSCO3.prjns.cn
http://LT9VLxhp.prjns.cn
http://p9CtK83f.prjns.cn
http://1cBeLVbg.prjns.cn
http://h6xLGGEM.prjns.cn
http://bgbgCLHT.prjns.cn
http://FkklOAvv.prjns.cn
http://4eNHdXdV.prjns.cn
http://lRGGzgEb.prjns.cn
http://qoOpBtGs.prjns.cn
http://www.dtcms.com/a/14767.html

相关文章:

  • 微软编程之C#如何学习,C#学习路线:从入门到精通
  • Docker Desktop WebAPI《1》
  • 【DuodooBMS】基于Odoo的开源制造执行系统——以开源之力,驱动智能制造
  • NO.16十六届蓝桥杯备战|for循环|七道习题|ceil|floor|pow(C++)
  • 以什么方式维护html网页的多语言版本比较好
  • 渗透测试--文件包含漏洞
  • 蓝桥杯算法日记|2.11二分算法
  • C语言之循环结构:直到型循环
  • 点大商城V2-2.6.6源码全开源uniapp +搭建教程
  • 安装WPS后,导致python调用Excel.Application异常,解决办法
  • 【C++ 真题】P1824 进击的奶牛
  • elementUI tree树形控件 根据数据动态设置禁用,全选时不可选中禁用数据
  • 股指期货和etf期权哪个更好交易?
  • 零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构
  • 在 PyCharm 中接入deepseek的API的各种方法
  • CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测,光伏功率预测
  • 【Java常用】注解与反射_2.反射
  • 讯方·智汇云校华为授权培训机构的介绍
  • DeepSeek的开源核爆:当技术民主化重构AI权力版图
  • 常用数据格式:json、bson、msgpack
  • POI 的 Excel 读写操作教程
  • Ubuntu 22.04 - OpenLDAP安装使用(服务器+LAM+客户端)
  • 对正则表达式说不!!!
  • 【Android开发】华为手机安装包安装失败“应用是非正式版发布版本,当前设备不支持安装”问题解决
  • CentOS本机配置为时间源
  • 自定义基座实时采集uniapp日志
  • depcheck检查node.js项目中未使用和缺失依赖的工具
  • 【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?
  • Ansible批量配置服务器免密登录步骤详解
  • 【pytest】获取所有用例名称并存于数据库