欢迎来到天天文库
浏览记录
ID:38720203
大小:549.50 KB
页数:15页
时间:2019-06-18
《计算机理论导引实验报告_CFG是P成员》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算理论导引实验报告HUNANUNIVERSITY计算理论导引实验报告题目:CFG是P成员学生姓名:安佳玮学生学号:20090810101专业班级:计算机科学与技术1班上课老师:吴昊实验日期:2011-12-2214计算理论导引实验报告目录一、实验目的2二、实验方法2三、实验代码2四、测试数据以及运行结果1014计算理论导引实验报告一、实验目的上下文无关文法CFGG是否派生某个串W。采用动态规划(DynamicProgramming)设计一个多项式时间的验证算法二、试验方法编写一个算法/程序,对于给定的输入,可以在多项式时间内判定ACFG。三、
2、实验代码#include//第一类规则,即规则右边只含有两个变元classRegular_1{public:intleft;intright_1;intright_2;};//第二类规则,即规则右边只含有一个终结符或者空classRegular_2{public:intleft;intright;};//表格类,用来存放中间数据classTable{public:intsize;//表格的行和列的数量,与输入长度相同intnum_v;//表格中每个单元格最多含有的数量大小,与cfg的变元数量相同int***value;//用来存放
3、数据的三元数组Table(intnum_v,intnum_w);//构造函数,参数指定输入字符串的长度以及cfg变元的数量~Table();//析构函数voidSetValue(inti,intj,intnum);//向表格第i行j列追加数据numboolCheckValue(inti,intj,intnum);//检查表格第i行j列是否含有数据num,含有则返回true,否则返回falsevoidPrint();//打印表格的内容};14计算理论导引实验报告Table::~Table(){if(value)deletevalue;}voidTable:
4、:SetValue(inti,intj,intnum){int*p=value[i][j];//寻找追加数据的位置while((*p)!=-1){p++;}*p=num;}boolTable::CheckValue(inti,intj,intnum){int*p=value[i][j];while((*p)!=-1){if((*p)==num)returntrue;p++;}returnfalse;}Table::Table(intnum_v,intnum_w){size=num_w;this->num_v=num_v;value=newint**[nu
5、m_w];//给value动态分配,并将初值设为-1for(inti=0;i6、<<"表格为空"<value[i][j][k]==-1)break;elsecout<value[i][j][k]<<"";}cout<7、r2;intstart_v;boolGo(int*w);CFG();~CFG();14计算理论导引实验报告};CFG::CFG(){cout<>num_v;cout<<"终结符总数:";cin>>num_e;cout<<"----------------------"<8、:";cin>>num_r1;r1=newRegular_1[num_r1+1]
6、<<"表格为空"<value[i][j][k]==-1)break;elsecout<value[i][j][k]<<"";}cout<7、r2;intstart_v;boolGo(int*w);CFG();~CFG();14计算理论导引实验报告};CFG::CFG(){cout<>num_v;cout<<"终结符总数:";cin>>num_e;cout<<"----------------------"<8、:";cin>>num_r1;r1=newRegular_1[num_r1+1]
7、r2;intstart_v;boolGo(int*w);CFG();~CFG();14计算理论导引实验报告};CFG::CFG(){cout<>num_v;cout<<"终结符总数:";cin>>num_e;cout<<"----------------------"<8、:";cin>>num_r1;r1=newRegular_1[num_r1+1]
8、:";cin>>num_r1;r1=newRegular_1[num_r1+1]
此文档下载收益归作者所有