本校自制搜索题练习第二弹

第一次搜索题练习各种惨死,第二次虽然稍有提高但是丝毫改变不了惨死的命运=-=(不是至少没有死的那么那么的惨不是╮(╯▽╰)╭)

所以就斗胆把诸水题还有题解拿出来晒一下=-=

T1

COGS1104冗余依赖

【题目描述】

在设计关系数据库的表格时,术语“函数依赖”(FD)被用来表示不同域之间的关系。函数依赖是描述一个集合中的域的值与另一个集合中的域的值之间的关系。记号X->Y被用来表示当集合X中的域被赋值后,集合Y的域就可以确定相应的值。例如,一个数据表格包含“社会治安编号”(S)、“姓名”(N)、“地址”(A)、“电话”(P)的域,并且每个人都与某个特定的互不相同的S值相对应,根据域S就可以确定域N、A、P的值。这就记作S->NAP。 
  写一个程序以找出一组依赖中所有的冗余依赖。一个依赖是冗余的是指它可以通过组里的其他依赖得到。例如,如果组里包括依赖A->B、B->C和A->C,那么第三个依赖是冗余的,因为域C可以用前两个依赖得到(域A确定了域B的值,同样域B确定了域C的值)。在A->B、B->C、C->A、A->C、C->B和B->A中,所有的依赖都是冗余的。 
  现在要求你编写一个程序,从给定的依赖关系中找出冗余的。 
     

【输入格式】

输入第一行是一个不超过100的整数n,它表示文件中函数依赖的个数。从第二行起每一行是一个函数依赖且互不重复,每行包含用字符“-”和“>”隔开的非空域列表。列表月包含大写的字母,函数依赖的数据行中不包括空格和制表符,不会出现“平凡”冗余依赖(如A->A)。虽然文件中没有对函数依赖编号,但其顺序就是编号1到n。

【输出格式】

  每一个冗余依赖,以及其他依赖的一个序列以说明该依赖是冗余的,先是一个FD,然后是依赖函数号,接着是"is redundant using FDs:”最后是说明的序列号。 
  如果许多函数依赖的序列都能被用来说明一个依赖是冗余的,则输出其中最短的证明序列。如果这些函数依赖中不包含冗余依赖,则输出“No redundant FDs”信息。 

【样例输入】

6 
P->RST 
VRT->SQP
PS->T
Q->TR
QS->P
SR->V

 
 
 

【样例输出】

FD 3 is redundant using FDs: 1
FD 5 is redundant using FDs: 4 6 2

这个题在我们到来之前在COGS上AC率为0来着0-0颓了一上午没颓出来后来问了寻求了TA神帮助才搞出来了=。=

感谢TA神的代码=。=

<span style="font-size:12px;">#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
int pred[100000],e[100000];
bool q[100000][26],s[2][100][26];
inline void in(bool * s){
	int c=getchar();
	while(c<'A'||c>'Z')c=getchar();
	for(;c>='A'&&c<='Z';c=getchar())
		s[c-'A']=1;
}
inline bool sub(bool * a,bool * b){
	for(int i=0;i<26;+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值