人工智能-合一算法(C++)(共5页)

上传人:des****85 文档编号:215042752 上传时间:2021-11-24 格式:DOCX 页数:5 大小:102.07KB
返回 下载 相关 举报
人工智能-合一算法(C++)(共5页)_第1页
第1页 / 共5页
人工智能-合一算法(C++)(共5页)_第2页
第2页 / 共5页
人工智能-合一算法(C++)(共5页)_第3页
第3页 / 共5页
人工智能-合一算法(C++)(共5页)_第4页
第4页 / 共5页
人工智能-合一算法(C++)(共5页)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《人工智能-合一算法(C++)(共5页)》由会员分享,可在线阅读,更多相关《人工智能-合一算法(C++)(共5页)(5页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上人工智能第1次作业一般合一算法(C+实现)姓名:佟 学号: 班级:12计本非师 学院:信息学院一、 简单程序如下#include #include #include using namespace std;int iC=0; /标记公式集中括号匹配数class Syncretismprivate:struct Transform / 一个代换(差异集)string t_f1;string t_f2;public:bool Issyn(string f1,string f2, vector &t ); /是否能合一Transform different(const st

2、ring f1,const string f2) /求差异集int i=0;Transform t;while(f1.at(i)=f2.at(i)i+;int j1=i;while(j1f1.length()-1&f1.at(j1)!=,)j1+;if(j1-i=0) return t;t.t_f1=f1.substr(i,j1-i);int j2=i;while(j2f2.length()-1&f2.at(j2)!=,)j2+;if(j2-i=0) return t;t.t_f2=f2.substr(i,j2-i);while(t.t_f1j1-i-1=t.t_f2j2-i-1)t.t_f1

3、.erase(j1-1-i);t.t_f2.erase(j2-i-1);j1-;j2-;return t;bool same(const string f1,const string f2) ; / 判断两个公式是否相同string change(string f,Transform t); /用代换q 对公式f 进行合一代换bool legal(Transform &t); /int var(const string s); /s 中每个()内的子串是变量还是常量void show();/最终演示算法;bool Syncretism:Issyn(string f1,string f2,vec

4、tor &lan)while(!same(f1,f2)Transform t=different(f1,f2);bool flag=legal(t);if(!flag)return false;elselan.push_back(t); /将t 加入vector lan 中if(flag)f1=change(f1,lan.back(); /用lan 的最后一个元素代换f2=change(f2,lan.back();cout变换后:endl;coutf1:f1endl;coutf2:f2endlendl;if(same(f1,f2) break;return true;bool Syncreti

5、sm:same(const string f1, const string f2)if(pare(f2)=0) return true;else return false;string Syncretism:change(string f,Transform t)int i=f.find(t.t_f2);while(if.length()i=f.find(t.t_f2);if(if.length()f=f.replace(i,t.t_f2.length(),t.t_f1);return f;bool Syncretism:legal(Transform &t)if(t.t_f1.length(

6、)=0|t.t_f2.length=0)return false;else if(var(t.t_f1)=0|var(t.t_f2)=0) return false;else if(var(t.t_f1)=1&var(t.t_f2)=1&t.t_pare(t.t_f2)!=0)return false;else if(var(t.t_f1)=2)if(var(t.t_f2)=1)string temp=t.t_f1; /变量常量交换位置t.t_f1=t.t_f2;t.t_f2=temp;elseint i1=var(t.t_f2);i1=iC;iC=0;int i2=var(t.t_f1);i

7、2=iC;if(i1=a&s01)int i=0;while(is.length()&s.at(i)!=()i+;iC+;string ss=s.substr(i+1,s.length()-i-2); /抽取s 中的匹配的()中的子串return var(ss);else return 2;void Syncretism:show()cout常量:形如a,b,c,d(a-g)等endl变量:形如x,y,z,u 等endl;string f1,f2;coutf1;coutf2;vector lan;if(Issyn(f1,f2,lan)if(same(f1,f2) /如果f1,f2 相同则合一为

8、cout合一 = endl;return ;cout合一 = ;for(int i=0;ilan.size()-1;i+)coutlani.t_f1/lani.t_f2,;coutlani.t_f1/lani.t_f2 endl;elsecout不能进行合一endl;int main()Syncretism Sy;Sy.show();return 0;二、演示结果三、程序的实现Transform 中的t_f1,t_f2 分别表示差异集中的两个字符串。Vector 变量lan 存放合一的集合。函数功能Issyn() 判断两个公式是否相同。different() 求差异集。change() 用代换

9、对公式进行合一代换。legal() 对t_f1,t_f2 判断然后对换并判断是否为合一字符串same() 判断两个公式是否相同。var() 字符串每个()内的子串是变量还是常量。show() 最终演示算法函数。四、具体程序执行程序执行时先输入公式集中的公式然后调用Issyn 函数判断是否能合一如果不能则退出,如果能判断公式是否相同相同则合一是。不是则进一步判断。调用different 函数找出差异集放在vector变量 lan 中再调用legal 函数和var 函数判断合一时到底哪个是变量哪个是常量t_f1 存放常量t_f2 存放变量不符合则进行交换,在用t_f1 代换调公式中的t_f2进行下一轮的比较寻找差异集然后判断再代换。每次差异集都添加到lan 中最后输出lan 中的元素。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号