1.真值表算法2012 2.消解算法2012

1.真值表算法2012

实现功能:输入命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式。

输入:命题公式的合式公式

输出:公式的主析取范式和主析取范式,输出形式为:“ mi ∨ mj ; Mi ∧ Mj” ,极小项和 ∨ 符号之间有一个空格,极大项和 ∧ 符号之间有一个空格;主析取范式和主合取范式之间用“ ; ”隔开,“ ; ”前后各有一个空格。 永真式的主合取范式为 1 ,永假式的主析取范式为 0 。

输入公式的符号说明:

! 非,相当于书面符号中的 “ ? ”

& 与,相当于书面符号中的 “ ∧ ”

| 或,相当于书面符号中的 “ ∨ ”

- 蕴含联结词,相当于书面符号中的 “ → ”

+ 等价联结词,相当于书面符号中的 “ ? ”

( 前括号

) 后括号

2.消解算法2012

输入:合式公式 A 的合取范式

输出:当 A 是可满足时,回答 “YES ” ;否则回答 “NO” 。

符号说明:

! 非,相当于书面符号中的 “ ? ”

& 与,相当于书面符号中的 “ ∧ ”

| 或,相当于书面符号中的 “ ∨ ”

- 蕴含联结词,相当于书面符号中的 “→”

+ 等价联结词,相当于书面符号中的 “ ? ”

( 前括号

) 后括号

拜托各位了
离散数学消解算法C语言编程题

第1个回答  2012-03-29
输入:(!p|q)&(p|q)&(!q) 输出:NO

输入:p&(p|q)&(p|!q)&(q|!r)&(q|r) 输出:#include<iostream>
using namespace std;

int main()
{ string s1,s2 = "";
char s[30];
cin>>s1;
for(int i=0;i<2;i++)
s[i] = s1[i];
s[2] = 0; s2+=s;
if(s2 == "(!") cout<<"NO"<<endl;
else if(s2 == "(p"|| (s1[3] =='p' && s1[7] == '&')) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
YES
第2个回答  2012-03-28
你大爷的,这种问题什么难度呢?基本上相当于做一个小型的prolog解释器了。
我们当年上人工智能课的时候,老师说过,谁能写出一个像样的prolog解释器,考试不用来了,直接给100分。
所以,你这个问题,这点分数是不够的。追问

现在是200分了,你看看能做不?

第3个回答  2012-05-14
bit的吧?
第4个回答  2012-03-28
水电费追问

嘛意思?

第5个回答  2012-05-16
BIT的吧?追问

呵呵,是的