用完全面向对象编程解决(源码和解释都有)
http://lywang.5d6d.com/thread-79-1-1.html实现主要逻辑为
Subject Chinese = new Subject("语文");
Subject Math1 = new Subject("算术");
Subject Politics = new Subject("政治");
Subject Geography = new Subject("地理");
Subject Music = new Subject("音乐");
Subject Art = new Subject("美术");
//1 政治老师和算术老师是邻居。
Politics.SetEnemy(ref Math1);
//2 地理老师比语文老师年龄大。
Geography.SetEnemy(ref Chinese);
//3 B最年青
Geography.SetEnemy("B");
//4 A经常对地理老师和算术老师讲他看过的文学作品。
Geography.SetEnemy(ref Math1);
Geography.SetEnemy("A");
Math1.SetEnemy("A");
//5 B经常和音乐老师和语文老师一起游泳。
Music.SetEnemy(ref Chinese);
Music.SetEnemy("B");
Chinese.SetEnemy("B");
http://lywang.5d6d.com/thread-79-1-1.html实现主要逻辑为
Subject Chinese = new Subject("语文");
Subject Math1 = new Subject("算术");
Subject Politics = new Subject("政治");
Subject Geography = new Subject("地理");
Subject Music = new Subject("音乐");
Subject Art = new Subject("美术");
//1 政治老师和算术老师是邻居。
Politics.SetEnemy(ref Math1);
//2 地理老师比语文老师年龄大。
Geography.SetEnemy(ref Chinese);
//3 B最年青
Geography.SetEnemy("B");
//4 A经常对地理老师和算术老师讲他看过的文学作品。
Geography.SetEnemy(ref Math1);
Geography.SetEnemy("A");
Math1.SetEnemy("A");
//5 B经常和音乐老师和语文老师一起游泳。
Music.SetEnemy(ref Chinese);
Music.SetEnemy("B");
Chinese.SetEnemy("B");
B:算术.美术.
C:地理.音乐.好像写编程比较麻烦,判断条件太多?
a 语文 音乐
c 算术 地理
4楼是对的A:语文 政治
B:算术 美术
C:地理 音乐
2 地理老师比语文老师年龄大。 //地理老师跟语文老师不是同一个人,B不是地理老师
3 B最年青 //小B最小
4 A经常对地理老师和算术老师讲他看过的文学作品。 //只说明A不教地理跟算术,但只能理解为地理跟算术不是同一个人
5 B经常和音乐老师和语文老师一起游泳。 //只说明B不教音乐跟语文,也只能理解为音乐和语文不是同一个人
结果:
很容易得到C: 地理,音乐;但A,B只能靠那个不算条件的条件:A:语文,政治;B:算术,美术!
结果很容易得到,
接楼上了,做了简单分析,现在大家可以看懂了:1 政治老师和算术老师是邻居。 //政治老师跟算术老师不是同一个人
2 地理老师比语文老师年龄大。 //地理老师跟语文老师不是同一个人,B不是地理老师
3 B最年青
4 A经常对地理老师和算术老师讲他看过的文学作品。//只说明A不教地理跟算术,但只能理解为地理跟算术不是同一个人
5 B经常和音乐老师和语文老师一起游泳。 //只说明B不教音乐跟语文,也只能理解为音乐和语文不是同一个人 开始推理
首先可以得出C是教地理的
因为A不教地理跟算术,B也不教地理得出 C:地理地理老师跟语文老师不是同一个人,得出C不教语文,但是B也不教语文,所以
得出 A:语文地理跟算术不同是一个人,说明C不教算术,但A不教算术
得出 B:算术目前还剩下 : 政治,美术,音乐政治跟算术不是同一个人说明 B不教政治,B也不教音乐
得出 B:美术还剩下 政治,音乐
音乐和语文不是同一个人,说明
A:政治则
C:音乐