zl老师布置的作业,网上代码都好长,自己写一个才200行
自己写就是很开心,抄代码有什么意思呢
/*
符号注记:
+ * - -> <-> T F
合取 析取 非 单条件 双条件 true false
运用的方法:
1.将中缀表达式转换为后缀表达式便于计算
2.DFS二进制枚举每个状态并用后缀表达式求值,得到真值表
3.根据真值表打印主析取函数和主合取函数
修改:
1.0 修改增加了条件和双条件符号的判定
2.0 修改了将“T”和“F”也作为命题变元判定的错误
(结尾附样例输入输出)
*/
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stack>
#define go(i,a,b) for (int (i)=(a);(i)<=(b);(i)++)
#define ll long long
#define N 10005
#define MOD 1000000007
using namespace std;
char s[N];
char a[N];
map<ll,int>m;
stack<char> stk;
void workit1(){
while (!stk.empty()) stk.pop();
int len=strlen(s), k=0;
go(i,0,len-1){
if (s[i]>='A'&&s[i]<='Z'){
a[k++]=s[i];
}
else if (s[i]==')'){
while (stk.top()!='('){
a[k++]=stk.top();
stk.pop();
}
stk.pop();
}
else{
if (s[i]=='-'&a

这是一篇关于离散数学作业的博客,作者分享了如何用简洁的代码实现根据输入命题生成真值表以及求解主析取(合取)范式的方法。作者强调了自己编写代码的乐趣,认为亲自实践比复制他人代码更有意义。
最低0.47元/天 解锁文章
2003

被折叠的 条评论
为什么被折叠?



