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

设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

我的做法是暴力,假设左集所有的元素都在闭包集中,那么可以推出右集也在闭包集中,因为最多26个字母,多循环几次就可以得到答案。

#include <bits/stdc++.h>
using namespace std;
struct node
{
char s1[], s2[];
} q[];
int main()
{
int t, i, n, m;
cin>>t;
int a[];
while(t--)
{
scanf("%d%d%d", &i, &n, &m);
char s[], str[];
scanf("%s", str);
scanf("%s", s);
for(int i = ; i <= m; i++)
{
scanf("%s%s", q[i].s1, q[i].s2);
}
memset(a, , sizeof a);
int l = strlen(s);
for(int i = ; i < l; i++)
{
a[s[i]-'A']++;
}
while()
{
bool flag = ;
for(int i = ; i <= m; i++)
{
int l1 = strlen(q[i].s1);
bool f = ;
for(int j = ; j < l1; j++)
{
if(!a[q[i].s1[j]-'A'])
f = ;
}
if(f)
{
int l2 = strlen(q[i].s2);
for(int k = ; k < l2; k++)
{
if(!a[q[i].s2[k]-'A'])
{
a[q[i].s2[k]-'A']++;
flag = ;
} }
}
}
if(!flag) break;
}
l = strlen(str);
for(int i = ; i < l; i++)
{
if(a[str[i]-'A'])
printf("%c", str[i]);
}
cout<<endl;
}
return ;
}

【河南省第十一届ACM大学生程序设计竞赛-D】.求XF+闭包的更多相关文章

  1. 河南省第十一届ACM大学生程序设计竞赛

    nyoj-1365-山区修路 内存限制:128MB 时间限制:3000ms 特判: No通过数:4 提交数:4 难度:3 题目描述: SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间, ...

  2. Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...

  3. 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server

    点击打开链接 2226: Contest Print Server Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 53  Solved: 18 [Su ...

  4. 山东省第四届ACM大学生程序设计竞赛解题报告(部分)

    2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...

  5. [2012山东省第三届ACM大学生程序设计竞赛]——n a^o7 !

    n a^o7 ! 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2413 Time Lim ...

  6. angry_birds_again_and_again(2014年山东省第五届ACM大学生程序设计竞赛A题)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2877 题目描述 The problems ca ...

  7. 第八届山东省ACM大学生程序设计竞赛个人总结

    因为省赛,从开学紧张到5月7号.心思也几乎全放在ACM的训练上.因为我还是校台球协会的会长,所以台协还有一些事情需要忙,但是我都给延迟了.老会长一直在催我办校赛,但我一直说 等等吧,因为校赛只能在周六 ...

  8. sdut Mountain Subsequences 2013年山东省第四届ACM大学生程序设计竞赛

    Mountain Subsequences 题目描述 Coco is a beautiful ACMer girl living in a very beautiful mountain. There ...

  9. ZZUOJ-1195-OS Job Scheduling(郑州大学第七届ACM大学生程序设计竞赛E题)

    1195: OS Job Scheduling Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 106  Solved: 35 [id=1195&quo ...

随机推荐

  1. Java Vertor详细介绍和使用示例

    ①对Vector有个整体认识 Vector是向量类,继承于AbstractList,实现了List,RandomAccess,Clonable这些接口. Vector继承于AbstractList,实 ...

  2. NC学习笔记

    NC基础技术  一.NC开发基本概念        1.单据:一般是由表头,表体,表位组成.                   表头:一般是一些主信息,例如日期,项目等               ...

  3. 安全SOCKET

    导语 要使用安全Socket需要对密码学有一定的了解.在阅读本文之前最好能阅读一下下面几个网站的内容 http://kb.cnblogs.com/page/194742/ http://kb.cnbl ...

  4. path.join()和path.resolve()的区别

    现在写代码的时候有时候使用path.join(__dirname,'dist')有时候用path.resolve(__dirname,'dist'),都是能拼接处来一个绝对路径,但是具体有什么区别呢? ...

  5. 《Java程序设计》实验1实验报告

    20145318 <Java程序设计>实验1实验报告 实验题目 通过对500个数据进行操作,实现快速排序.选择排序.直接插入排序算法时间复杂度的比较:并在排序数据中快速查找某一数据,给出查 ...

  6. 20135320赵瀚青LINUX内核分析第三周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周是学习的主要是构造 ...

  7. 学习Windows(BAT)、Linux(Shell)编程,并分别写一个脚本文件解决自己的一个问题

    delete: @echo off echo Press any key to delete this file.pause del %0 ip: @echo off color a Title 端口 ...

  8. Win7下硬盘安装fedora17

    Win7下硬盘安装fedora17 这几天经过很多次的百度和实验,终于成功的在我的x64机子上装上了fedora17,以此分享给大家,希望能给大家帮助. 一.准备工作: 1.工具,因为我们电脑上大部分 ...

  9. Job流程:Mapper类分析

    此文紧接Job流程:决定map个数的因素,Map任务被提交到Yarn后,被ApplicationMaster启动,任务的形式是YarnChild进程,在其中会执行MapTask的run()方法.无论是 ...

  10. nxp的layerscape系列芯片中的rcw指定了一些什么信息

    答:指定了一些可以配置的硬件信息(如可以配置uart相关的引脚功能).引导镜像(uboot)的读取地址以及从何种介质(flash,sd)启动系统的信息