关系推断
来源:互联网 发布:php7怎么配置apache 编辑:程序博客网 时间:2024/04/30 21:40
关系推断
题目描述
给你一些已经确定的元素之间的关系,请你判断是否能从这些元素关系中推断出其他的元素关系。
输入
输入的第一行是一个整数N,表示测试数据的组数。
每组输入首先是一个正整数m(m<=100),表示给定元素关系的个数。
接下来m行,每行一个元素关系,格式为:
元素1<元素2 或者 元素1>元素2
元素用一个大写字母表示,输入中不会包含冲突的关系。
输出
对于每组输入,第一行输出“Case d:”,d是测试数据的序号,从1开始。
接下来输出所有推断出的新的元素关系,按照字典序从小到大排序,格式为:
元素1<元素2
每个元素关系占一行,输入中给定的元素关系不要输出。
如果没有新的元素关系推断出来,则输出NONE。
样例输入
23A<BC>BC<D2A<BC<D
样例输出
Case 1:A<CA<DB<DCase 2:NONE
题意概括
给出两个字母之间的大小关系,然后推断这个字母和其他字母的大小关系;
解题思路
使用floyd算法讲所有的关系进行更新之后输出;
代码
#include<stdio.h>#include<string.h>#include<ctype.h>#include<math.h>#include<algorithm>#include<queue>#define inf 0x3f3f3f3fusing namespace std;int line [30][30];int vis[30][30];void floyd(){ int i,j,k; for(i=0;i<26;i++){ for(j=0;j<26;j++){ for(k=0;k<26;k++){ if(line[i][j]==0) line[i][j]=line[i][k]&&line[k][j]; } } }}int main (){ int t,n,m,i,j; char ch1,ch2,ch; int l; scanf("%d",&t); l=0; while(t--){ l++; memset(vis,0,sizeof(vis)); memset(line,0,sizeof(line)); scanf("%d",&n); for(i=1;i<=n;i++){ scanf(" %c%c%c",&ch1,&ch,&ch2); vis[ch1-'A'][ch2-'A']=i; vis[ch2-'A'][ch1-'A']=i; if(ch=='>') line[ch1-'A'][ch2-'A']=1; else line[ch2-'A'][ch1-'A']=1; } floyd(); printf("Case %d:\n",l); /*for(i=0;i<26;i++){ for(j=0;j<26;j++){ printf("%d ",vis[i][j]); } printf("\n"); }*/ int num=0; for(i=0;i<26;i++){ for(j=0;j<26;j++){ if(vis[i][j]!=0&&vis[j][i]==vis[i][j]){ continue; } if(line[j][i]){ printf("%c<%c\n",i+'A',j+'A'); num++; } } } if(num==0){ printf("NONE\n"); } } return 0;}
阅读全文
0 0
- 关系推断
- 1001关系推断
- C++:由输出推断继承关系
- ACMclub - 1122 关系推断 (拓扑排序, 并查集)
- 推断性统计部分(一)---样本与分布的关系及其检验统计量
- 类型推断
- 类型推断
- 逻辑推断
- 逻辑推断
- 数字推断
- 贝叶斯推断 2. 统计推断
- 模板实参推断
- 模板实参推断
- 模板实参推断
- 6.6 类型推断
- 二叉树遍历推断
- 推断和学习
- 蓝桥杯逻辑推断题
- 用通俗易懂的话说下hadoop是什么,能做什么
- listView的简化适配器commonAdapter
- 移动应用安全测试方法总结
- Servlet 生命周期
- 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
- 关系推断
- js 实例 及 原型
- Android源码基础解析之HandlerThread
- 从B 树、B+ 树、B* 树谈到R 树
- ROS中log日志文件的获取
- Sublime Text3 如何安装、删除及更新插件
- 语音识别技术
- Bundle 的使用
- Storm是什么?