本文仅为学习记录,如有疏漏,还请大家指正;
本题为离散数学课后习题 题目描述如下:
某公司要从赵,钱,孙,李,周五名新毕业的大学生中选派一些人出国学习。选派必须满足以下条件:
1,若赵去,则钱也去。
2,李,周两人中必有一人去。
3,钱,孙两人中去且仅去一人。
4,孙,李两人同去或同不去。
5,若周去,则赵,钱也同去。
解法如下:可以设命题p,q,r,s,t分别表示赵,钱,孙,李,周去,将题中所给的五句话翻译为
1:(p->q)
2:(s&&t)||(!s&&t)||(s&&!t)
3:(q&&!r)||(!q&&r)
4:(r&&s)||(!r&&!s)
5:(t->(p&&q) )
其中1和5再推导一下,接下来的运算就交给计算机了,代码如下
#include<iostream>
using namespace std;
int p,q,r,s,t;//p(赵),q(钱),r(孙),s(李),t(周)
int main(){
for(int p=0;p<=1;p++){
for(int q=0;q<=1;q++){
for(int r=0;r<=1;r++){
for(int s=0;s<=1;s++){
for(int t=0;t<=1;t++){
if((!p||q)&&(r||t)&&((q&&!s)||(!q&&s))&&((r&&s)||(!r&&!s))&&(!t||(p&&q))){
if(p==1) cout<<"赵去"<<endl;
if(q==1) cout<<"钱去"<<endl;
if(r==1) cout<<"孙去"<<endl;
if(s==1) cout<<"李去"<<endl;
if(t==1) cout<<"周去"<<endl;
cout<<endl;
}
}
}
}
}
}
return 0;
}
8670

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



