基本信息
源码名称:C# 算法学习例子源码下载
源码大小:0.01M
文件格式:.txt
开发语言:C#
更新时间:2015-05-18
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

在一条街上有颜色互不相同的五栋房子,不同国籍的人分别住在这五栋房子力,每人抽不同品牌的香烟,喝不同的饮料,养不同的宠物。已知如下情况:
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();
                            }
                        }
                    }
                }
            }
        }