求最小覆盖繁版c++程序.doc_第1页
求最小覆盖繁版c++程序.doc_第2页
求最小覆盖繁版c++程序.doc_第3页
求最小覆盖繁版c++程序.doc_第4页
求最小覆盖繁版c++程序.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#includeusing namespace std;#include/*描述依赖的结构体*/struct FDstring foreward;string backward; ; /*求最小覆盖有关的函数*/void input(FD fd)string a,b;cout请您输入依赖关系:endl;for(int i=0;iab;fdi.backward=b;fdi.foreward=a;coutabendl;cout您输入的依赖关系有:endl;for(int j=0;j6;j+)coutfdj.forewardfdj.backward , ;coutendl;bool in(string fw,string res1)int count=0;for(int k=0;kfw.size();k+)for(int p=0;pres1.size();p+)if(fwk=res1p)count+;if(count=fw.size()return true;else return false;string join(string res1,string bw)int count=0;for(int k=0;kbw.size();k+)for(int p=0;pres1.size();p+)if(bwk!=res1p)count+;if(count=res1.size()res1=res1+bwk;count=0;else count=0;return res1;string closure(string x1,FD fd,string res) /求X在某个R上的闭包res=x1;int i=0;string oldres;dooldres=res;for(i;i5;i+)if(in(fdi.foreward, res)res=join(res,fdi.backward);i=0;while(oldres!=res);return res;FD *zuoquchong(FD fd) /使依赖关系右侧属性单一static FD fd110;int count=0; for(int i=0;i6;i+)for(int i1=0;i1A;static FD fdg10;int count=0;for(int i=0;i10;i+) if(i!=i1) fdgcount.foreward=fd1i.foreward; fdgcount.backward=fd1i.backward; count+; return fdg;FD *quchongFD(FD fd) /去掉冗余的FD; static FD fd210;for(int j=0;j10;j+)fd2j.foreward=fdj.foreward;fd2j.backward=fdj.backward;string re,re1;int count=0; for(int i=0;i10;i+)re1=closure(fd2count.foreward,GFD(fd2,count),re);if(in(fd2count.backward,re1)for(int p=0;p10;p+)fd2p.backward=GFD(fd2,count)p.backward;fd2p.foreward=GFD(fd2,count)p.foreward; elsecount+;return fd2;string determinant(string resd,int key) /求X-Bi; for(int p=key;presd.size();p+)resdp=resdp+1;return resd;FD *youquchong(FD fd) /去掉冗余的决定因素;static FD fd310;string re,re1;int count=0;for(int i=0;i10;i+)fd3i.foreward=fdi.foreward;fd3i.backward=fdi.backward;for(int j=0;j10;j+)count=0;for(int p=0;pfdj.foreward.size();p+)re1=closure(determinant(fd3j.foreward,count),fd3,re); /cout当前re1: re1endl;if(in(fd3j.backward,re1)fd3j.foreward=determinant(fd3j.foreward,count);else count+; return fd3; FD *MiniCoverage(FD fdf) /求R的最小覆盖FD *p,*q,*z;p=zuoquchong(fdf);q=quchongFD(p);z=youquchong(q);return z;/*输出函数一览*/void output1(FD fd11) cout右端属性单一后的函数依赖如下:endl; for(int j=0;j10;j+)coutfd11j.forewardfd11j.backward , ; coutendl; void output2(FD fd11) cout去掉重复依赖后的函数依赖如下:endl; for(int j=0;j10;j+)coutfd11j.forewardfd11j.backward , ; coutendl;void output3(FD fd11) cout去掉重复的决定因素后的函数依赖如下:endl; for(int j=0;j10;j+) coutfd11j.forewardfd11j.backward , ;coutendl;coutendl;void output4(FD fd11) cout您所求的关系模式R(U,F)的最小覆盖为:endl; for(int j=0;j10;j+) coutfd11j.forewardfd11j.backward , ; coutendl; /*主函数*/void main()cout提示1:此处仅限输入6组函数依赖,若小于6组,余下的位置请您用平凡依赖填补!endl;cout提示2:此处仅限函数依赖右端元素总和不得超过10个!endl;FD fds6;input(fds);output1(zuoquchong

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论