【河南省第十一届ACM大学生程序设计竞赛-D】.求XF+闭包
如何设计一个好的数据库不仅仅是一个理论研究问题,也是一个实际应用问题。在关系数据库中不满足规范化理论的数据库设计会存在冗余、插入异常、删除异常等现象。
设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+闭包的更多相关文章
- 河南省第十一届ACM大学生程序设计竞赛
		nyoj-1365-山区修路 内存限制:128MB 时间限制:3000ms 特判: No通过数:4 提交数:4 难度:3 题目描述: SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间, ... 
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
		Alice and Bob Time Limit: 1000ms Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ... 
- 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server
		点击打开链接 2226: Contest Print Server Time Limit: 1 Sec Memory Limit: 128 MB Submit: 53 Solved: 18 [Su ... 
- 山东省第四届ACM大学生程序设计竞赛解题报告(部分)
		2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ... 
- [2012山东省第三届ACM大学生程序设计竞赛]——n a^o7 !
		n a^o7 ! 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2413 Time Lim ... 
- angry_birds_again_and_again(2014年山东省第五届ACM大学生程序设计竞赛A题)
		http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2877 题目描述 The problems ca ... 
- 第八届山东省ACM大学生程序设计竞赛个人总结
		因为省赛,从开学紧张到5月7号.心思也几乎全放在ACM的训练上.因为我还是校台球协会的会长,所以台协还有一些事情需要忙,但是我都给延迟了.老会长一直在催我办校赛,但我一直说 等等吧,因为校赛只能在周六 ... 
- sdut Mountain Subsequences 2013年山东省第四届ACM大学生程序设计竞赛
		Mountain Subsequences 题目描述 Coco is a beautiful ACMer girl living in a very beautiful mountain. There ... 
- 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 ... 
随机推荐
- javaScript动画2  scroll家族
			offsetWidth和offsetHight (检测盒子自身宽高+padding+border) 这两个属性,他们绑定在了所有的节点元素上.获取之后,只要调用这两个属性,我们就能够获取元素节点的宽和 ... 
- 130. Surrounded Regions(周围区域问题  广度优先)(代码未完成!!)
			Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ... 
- rmp-st算法
			struct RMQ { ]; void init(int n) { ; i <= n; i ++)log2[i] = (i == ? - : log2[i >> ] + ); ; ... 
- centos ssh免密码秘钥登录
			假设从A主机ssh登录B主机,用秘钥代替密码,步骤如下: 1.在A主机上执行:ssh-keygen -t rsa 一切默认,不用输入密码,生成两个文件: /root/.ssh/id_rsa /roo ... 
- Ubuntu安装samba实现文件夹共享
			因工作需要,准备在Ubuntu服务器上共享文件夹,从Windows和Mac上都可以访问共享文件. 搜了一下,决定通过samba服务实现.安装过程如下: [step1]安装samba服务 sudo ap ... 
- linq分析
			例如: var sums = modellist .GroupBy(x => x.userId) .Select(group => new { Peo = group.Key, fist ... 
- [caffe]caffe资料收集
			1.caffe主页,有各种tutorial. 2.Evan Shelhamer的tutorial,包括视频. 
- spring-boot单元测试
			一.为什么要写单元测试 很多程序员有两件事情不愿意做: 写注释. 写单元测试. 但是在看代码时又会希望有清晰明了的注释,重构代码时能有一套随时可以跑起来的单元测试. 最近在迁移一个项目,从sqlser ... 
- 20145301实验四 Android开发基础
			20145301<Java程序设计>实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.26 15:30- ... 
- c#结构体和字节流之间的相互转换
			结构体转byte数组 1 首先要明白 ,是 在那个命名空间下 System.Runtime.InteropServices; 2 首先得到结构体的大小 2 开辟相应的内存空间 3 将结构体填 ... 
