实例介绍
【实例简介】
在一条街上有颜色互不相同的五栋房子,不同国籍的人分别住在这五栋房子力,每人抽不同品牌的香烟,喝不同的饮料,养不同的宠物。已知如下情况:
1. 英国人住红色房子里。
2. 瑞典人养狗。
3. 丹麦人喝茶。
4. 绿色房子坐落在白色房子的左面。
5. 绿色房子的主人喝咖啡。
6. 抽Pall Mall香烟的人养鸟。
7. 黄色房子的主人抽Dunhill香烟。
8. 挪威人住第一间房子。
9. 五座房子中间的那座的主人喝牛奶。
10. 抽Blends香烟的住在养猫人的隔壁。
11. 养马的人住在抽Dunhill香烟者的隔壁。
12. 抽Blue Master香烟的喝啤酒。
13. 德国人抽Prince香烟。
14. 挪威人住的房子在蓝色房子的隔壁。
15. 抽Blends香烟的人有一个喝水的邻居。
【核心代码】
void run()
{
int i1, i2, i3, i4, i5;///通过逻辑条件顺序的有效选择来优化程序
for (i1 = 1; i1 <= 120; i1 )///房子
{
///9 、挪威人住第一间房子
///14 、挪威人住在蓝房子旁边
///不满足条件就短路
///
if (ALL[2, i1] != 2) continue;
for (int j = 0; j < 5; j , answer[j, 1] = ALL[j, i1]) ;
for (i2 = 1; i2 <= 120; i2 )///人种
{
for (int j = 0; j < 5; j , answer[j, 2] = ALL[j, i2]) ;
///9 、挪威人住第一间房子
if (ALL[1, i2] != 1) continue;
///1、 英国人住在红房子里
///
if (find(1, 4) != find(2, 2)) continue;
///4 、绿房子在白房子左边
///
if (find(1, 5) > find(1, 3)) continue;
for (i3 = 1; i3 <= 120; i3 )///烟
{
for (int j = 0; j < 5; j , answer[j, 3] = ALL[j, i3]) ;
///13、 德国人抽PRINCE烟
///
if (find(2, 3) != find(3, 2)) continue;
///7 、黄房子主人抽DUNHILL烟
///
if (find(1, 1) != find(3, 1)) continue;
for (i4 = 1; i4 <= 120; i4 )///饮料
{
for (int j = 0; j < 5; j , answer[j, 4] = ALL[j, i4]) ;
///8 、住在中间那间房子的人喝牛奶
///
if (ALL[3, i4] != 4) continue;
///5 、绿房子主人喝咖啡
///
if (find(1, 5) != find(4, 1)) continue;
///3 、丹麦人喝茶
///
if (find(2, 4) != find(4, 3)) continue;
///15 、抽混合烟的人的邻居喝矿泉水
if (Math.Abs(find(3, 3) - find(4, 2)) != 1) continue;
///12 、抽BLUE MASTER烟的人喝啤酒
///
if (find(3, 5) != find(4, 5)) continue;
for (i5 = 1; i5 <= 120; i5 )///宠物
{
for (int j = 0; j < 5; j , answer[j, 5] = ALL[j, i5]) ;
///10 、抽混合烟的人住在养鱼人的旁边
///
if (Math.Abs(find(3, 3) - find(5, 1)) != 1) continue;
///2 、瑞典人养了一条狗
///
if (find(2, 5) != find(5, 5)) continue;
///6 、抽PALL MALL烟的人养了一只鸟
///
if (find(3, 4) != find(5, 4)) continue;
///11 、养马人住在DUNHILL烟的人旁边
///
if (Math.Abs(find(5, 3) - find(3, 1)) != 1) continue;
///
///能活到这里的data,当然是答案喽
///
write_answer();
}
}
}
}
}
}
标签: 爱因斯坦 经典 算法
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论