题目描述

如何设计一个好的数据库不仅仅是一个理论研究问题,也是一个实际应用问题。在关系数据库中不满足规范化理论的数据库设计会存在冗余、插入异常、删除异常等现象。

设R(U)是一个关系模式,U={ A1,A2, ……, An}。其中Ai是关系的属性,X,Y是U的子集。函数依赖 X->Y 定义了数据库中属性集X与Y的依赖关系。根据Armstrong公理,函数依赖满足:

(1)       自反律:若Ai∈X,  则 X->Ai .   特别地,Ai ->Ai .

(2)       增广律:若 X->Y,  则 ZX->ZY.      (ZX 是指集合Z与X的并集 )

(3)       传递律:若 X->Y,  Y->Z,  则 X->Z.

(4)       分解律:若 X->Y,  则 X->Ai        ( 若属性Ai∈Y  )

(5)       合并律:若 X->Y,  XàZ,  则 X->YZ.

已知 F 是关系模式R(U)上的函数依赖集,利用Armstrong公理系统可以推导出更多的函数依赖。设X是属性集U={ A1,A2, ……, An} 的子集, 定义X关于F的闭包XF+

XF+={ Ai | 若X-> Ai可以通过Armstrong公理导出}

对于给定的U , F ,X, 请求出XF+

输入

第一行: T        表示以下有T组测试数据             ( 1≤T ≤5 )

对每组数据,

      第1行: n  m  k       n 表示U中属性个数( 1≤n≤26 ), 用大写字母表示

m表示X中属性个数( 1≤m≤26 )

k个函数依赖  (1≤ k ≤ 20 )

第2行:  字符串U      n个大写字母

第3行:  字符串X      m个大写字母

接下来有K行,每行有两个字符串 S T,用一个空格隔开。 表示 SàT

输出

对每组测试数据,输出占一行输出XF+,要求按字母序输出。

样例输入

1
6 2 4
ABGDCI
AD
A B
BD I
AG C
C D

样例输出

ABDI
 /*
问题
输入F和X以及若干个依赖关系,输出X关于F的闭包 解题思路
简单理一下题目,就是在X的基础上还能加入多少属性,也就是依赖关系右边的集合,如何根据一个函数依赖判断该集合能不
能加入到结果中是关键,能不能的判断依据是函数依赖的左集合能否在当前的结果中找到,如果能够找到就将右集加入。
还需注意,如果一个依赖关系的右集的字典序越小,表明该属性越有可能作为一个属性集,从而推出更多的属性。
*/
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm> using namespace std;
char a[],b[];
int book[];
int ok(char c[]);
struct NODE{
char c[],d[];
}node[]; int cmp(struct NODE a,struct NODE b){
string s1,s2;
s1=a.d;
s2=b.d;
return s1<s2;
};
int main()
{
//freopen("E:\\testin.txt","r",stdin);
int T,n,m,k,i,j;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
scanf("%s%s",a,b); memset(book,,sizeof(book));
for(i=;i<m;i++){
book[b[i]-'A']++;
} for(i=;i<k;i++){
scanf("%s%s",node[i].c,node[i].d);
}
sort(node,node+k,cmp);
for(i=;i<k;i++){
if(ok(node[i].c)){//加入
for(j=;node[i].d[j] != '\0';j++){
book[node[i].d[j]-'A']++;
}
}
}
for(i=;i<;i++){
if(book[i] != )
printf("%c",i+);
}
puts("");
}
return ;
} int ok(char c[])
{
int lc=strlen(c);
for(int i=;i<lc;i++){
if(book[c[i]-'A'] == )
return ;
}
return ;
}

求XF+闭包(第十一届河南省省赛真题)的更多相关文章

  1. Checkpoints(第十一届河南省省赛真题)

    题目描述 As a landlocked country in central and southern Africa , the political situation has been relat ...

  2. ACM 第十一届 河南省省赛A题 计划日

    一.题目描述如下: 二.思路分析 其实这个如果是一个填空题,可以直接用Excel快速计算出来,反而用代码比较麻烦 说一下我的代码的思路: 1.如果N大于本月剩下的天数,就先从N天里减去本月剩下的天数, ...

  3. 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

    2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...

  4. 第十届蓝桥杯JavaB组省赛真题

    试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...

  5. Python解答蓝桥杯省赛真题之从入门到真题(二刷题目一直更新)

    蓝桥刷题 原文链接: https://github.com/libo-sober/LanQiaoCup Python解答蓝桥杯省赛真题之从入门到真题 不同字串 """ 一 ...

  6. 第九届蓝桥杯JavaC组决(国)赛真题

    1:年龄问题 s夫人一向很神秘.这会儿有人问起她的年龄,她想了想说: "20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍". 你能算出s夫人现在的年龄吗? 这 ...

  7. 【河南省第十一届ACM大学生程序设计竞赛-D】.求XF+闭包

       如何设计一个好的数据库不仅仅是一个理论研究问题,也是一个实际应用问题.在关系数据库中不满足规范化理论的数据库设计会存在冗余.插入异常.删除异常等现象. 设R(U)是一个关系模式,U={ A1,A ...

  8. Java实现第十一届蓝桥杯JavaB组 省赛真题

    试题 A: 指数计算 本题总分:5 分 [问题描述] 7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民 走过了 99 年. 请计算:7 ^ 2020 mod 1921,其中 ...

  9. 第九届蓝桥杯JavaA组省赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分数 题目描述 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项, 求这个和是多 ...

随机推荐

  1. SRM477

    250pt: 题意:给定一块蜂巢状的N*M矩阵,每块六边形和周围6个六边形相邻,现在告诉你哪些是陆地,哪些是水,问水陆交界处的长度. 思路:直接模拟 code: #line 7 "Islan ...

  2. acdream 20140730 D题

    今天见识到了“数学上来先打表”............ #include<iostream> using namespace std; #include<iomanip> #d ...

  3. Winform相关

    (1)C# WinForm程序退出的方法 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Applica ...

  4. Seaching TreeVIew WPF

    项目中有一个树形结构的资源,需要支持搜索功能,搜索出来的结果还是需要按照树形结构展示,下面是简单实现的demo. 1.首先创建TreeViewItem的ViewModel,一般情况下,树形结构都包含D ...

  5. 手机app有了短信验证码还有没必要有图片验证码?

    当然有必要,这里我们来聊一个恶意短信验证的案例,通过这个案例我们就能更好理解短信验证码和图片验证码这两者的关系了. 讨论防止恶意短信验证之前,我们先来看看什么是恶意短信验证及出现的原因. 恶意短信验证 ...

  6. API网关【gateway 】- 1

    最近在公司进行API网关重写,公司内采用serverMesh进行服务注册,调用,这里结合之前学习对API网关服务进行简单的总结与分析. 网关的单节点场景: 网关的多节点场景: 这里的多节点是根据模块进 ...

  7. 【友情链接】各位dalao的博客

    同省神犇 HA队长 __stdcall HA chty_syq为文文讲过字符串 HA cdcq为文文讲过后缀数组① ② Bluesky007超强的 外省神犇 知名OIer黄学长 一个可爱的蓝孩子qwq ...

  8. [学习笔记]树形dp

    最近几天学了一下树形\(dp\) 其实早就学过了 来提高一下打开树形\(dp\)的姿势. 1.没有上司的晚会 我的人生第一道树形\(dp\),其实就是两种情况: \(dp[i][1]\)表示第i个人来 ...

  9. jQuery基础(1)

    一.jQuery的介绍 1.为什么要使用jQuery? 在用js写代码时,会遇到一些问题,如下: 1)window.onload 事件有事件覆盖的问题,因此只能写一个事件: 2)代码容错性差: 3)浏 ...

  10. 复习 C++ 中类的函数指针

    函数指针这种东西,平时工作中基本上不会用到. 那函数指针会用在哪里? 下面是一些基本的用法,根据消息号调到对应的函数: #include <iostream> #include <m ...