C++复习(十九)——推理题

 

问题四十四: 新郎A,B,C与新娘X,Y,Z, A不与X结婚,X不与C结婚,C不与Z结婚,求出结婚情况

问题四十五:要求在ABCDEF六人中尽可能多的挑选若干人,其中
1、A,B至少一人
2、A,D不能同选
3、A,E,F要选两人
4、B,C都选或都不选
5、C,D选一个
6、若D不选则E也不选

问题四十六:A说B在说谎,B说C说谎,C说A,B在说谎 ,求ABC的谎话情况

/*
问题四十四: 新郎A,B,C与新娘X,Y,Z, A不与X结婚,X不与C结婚,C不与Z结婚,求出结婚情况

分析: 使用穷举法,相同数字表示婚配 


问题四十五:要求在ABCDEF六人中尽可能多的挑选若干人,其中
1、A,B至少一人
2、A,D不能同选
3、A,E,F要选两人
4、B,C都选或都不选
5、C,D选一个
6、若D不选则E也不选

分析:以数字形式表示
a+b>=1
a+d!=2
a+e+f==2
b+c==2||b+c==0
a+d==1
d+e==0||d==1 


问题四十六:A说B在说谎,B说C说谎,C说A,B在说谎 ,求ABC的谎话情况

分析:数字表示,1实话,0为谎话 
A+B == 1 
B+C == 1
(C==1&&(A+B==0))||(C==0&&(A+B)==2) 


问题四十七: 一个旅馆住着六个不同国籍的人ABCDEF,分别来自美,德,英,法,俄,意,现在已知
1、A和美国人是医生
2、E和俄罗斯人是教师
3、C和德国人是技师
4、B、F当过兵,德国人没参军
5、法国人比A年龄大,意大利人比C年龄大
6、B同美国人下周去旅行,C同法国人下周去度假 

分析:使用二维数组逐步判断符合题意的结果 
*/

#include<iostream>
using namespace std;

void hun_pei(){
	int a,b,c;
	int x=0,y=1,z=2;
	for(a=0;a<3;a++){
		for(b=0;b<3;b++){
			if(a==b)continue;
			for(c=0;c<3;c++){
				if(c==a||c==b)continue;
				if(a!=x&&c!=x&&c!=z){
					cout<<"a"<<" and "<<(char)('x'+a)<<endl;
					cout<<"b"<<" and "<<(char)('x'+b)<<endl;
					cout<<"c"<<" and "<<(char)('x'+c)<<endl;
					}
				}	
			}
		}
	}

void xuan_ren(){
	int a=0,b=0,c=0,d=0,e=0,f=0;
	for(a=0;a<=1;a++){
		for(b=0;b<=1;b++){
			for(c=0;c<=1;c++){
				for(d=0;d<=1;d++){
					for(e=0;e<=1;e++){
						for(f=0;f<=1;f++){
							if(a+b>=1 && a+d!=2 &&
								a+e+f==2 && (b+c==2||b+c==0) &&
								c+d==1 && (d+e==0||d==1)){
									cout<<"a:"<<a<<" b:"<<b<<" c:"<<c
									<<" d:"<<d<<" e:"<<e<<" f:"<<f<<endl;
								}			
						}
					}
				}
			} 
		}
	}
	//cout<<"no"<<endl;
}

void huang_hua(){
	int count=0;
	int a,b,c;
	for(a=0;a<=1;a++){
		for(b=0;b<=1;b++){
			for(c=0;c<=1;c++){
				if((a+b == 1)&&
					(b+c == 1)&&
					((c==1&&(a+b==0))||(c==0&&(a+b)!=0)))
					//count++;
					cout<<"A:"<<a<<" B:"<<b<<" C:"<<c<<endl;
			}
		}
	}
}

int main(){
	//题目四十四 
	hun_pei();
	//题目四十五 
	xuan_ren();
	//题目四十六 
	huang_hua();
	return 0;
}

       这其中有不合适或者不正确的地方欢迎指正,我的QQ号码:2867221444(乔金明),谢谢,也可以相互交流下,备注信息随意,只要能看得出是开发者或者学习者即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值