哪个国家的人是养鱼的?

题目如下:

1.在一条街上,有座房子,喷了种颜色.
2.每个房子里住着不同国籍的人.
3.每个人喝着不同的饮料,抽不同品牌的香烟,养不同的宠物

提示:
1.英国人住红色房子.
2.瑞典人养狗.
3.丹麦人喝茶.
4.绿色房子在白色房子左边.
5.绿色房子主人喝咖啡.
6.抽pall mall香烟的人养鸟.
7.黄色房子主人抽dunhill香烟.
8.住在中间房子的人喝牛奶.
9.挪威人住第一间房.
10.抽blends香烟的人住在养猫的人隔壁.
11.养马的人住抽dunhill香烟的人隔壁.
12.抽blue master的人喝啤酒.
13.德国人抽prince香烟.
14.挪威人住蓝色房子隔壁.
15.抽blends香烟的人有一个喝水的邻居。

 

     推理倒是简单,拿个纸和笔。花几下就可以推断出是德国人养鱼的。前天竹君给了这个题目,原来就做过,兴趣昂然的有做了 一遍。就想用程序把它写出来,今天实现了下,确实有点难度。一开始就没考虑好,到了后面问题全出来了,无限循环了,判断循环太多了。程序和人的思维不一样。还是要好好的研究下!

程序实现的思路
因为每一样都是不重复的,所以我们可以
建立6个一维数组用来存储颜色,房子位置,国家,宠物,饮料,香烟,建立一个2维数组代表要方格。然后把相关的东西进行填充,填充完一个然后进行判断,如果下面有条件不成立则要返回到原始的状态,即填充前的数组内容(为null),myStack用来记录填充了的相关内容。
public static string[] color=new string[5]{"红色" ,"黄色" ,"蓝色", "绿色", "白色"};
       public static string[] house = new string[5] { "1", "2", "3", "4", "5" };//表示第几个房子
       public static string[] country = new string[5] { "德国", "挪威", "英国", "丹麦", "瑞典" };
       public static string[] pet = new string[5] { "马", "狗", "猫", "鸟", "鱼" };
       public static string[] tomacoo = new string[5] { "pallmall", "dunhill", "blends", "bluemaster", "prince" };
       public static string[] drink = new string[5] { "茶", "咖啡", "牛奶", "啤酒", "水" };
       public  string[,] condition = new string[5, 5];//一纬代表国籍 二纬代表颜色,房子号数,宠物,香烟,饮料 默认是null
       public int[,] myStack = new int[5, 5];//用来记录相应栈的位置 0 表示没有填充 1表示填充了
刚开始准备一个一个的填充,然后进行判断,在写程序的时候发现,太难写了,在写程序的时候发现给定的这些条件还是可以在分的
如下:

提示:
//固定条件
1.英国人住红色房子. condition[2][0]="红色"
2.瑞典人养狗. condition[4][1]="狗"
3.丹麦人喝茶.
13.德国人抽prince香烟
9.挪威人住第一间房.

//进行填充的 和判断的
5.绿色房子主人喝咖啡.
6.抽pall mall香烟的人养鸟.
7.黄色房子主人抽dunhill香烟.
8.住在中间房子的人喝牛奶.
12.抽blue master的人喝啤酒.


//进行判断的
10.抽blends香烟的人住在养猫的人隔壁.
11.养马的人住抽dunhill香烟的人隔壁.
4.绿色房子在白色房子左边. 
14.挪威人住蓝色房子隔壁.
15.抽blends香烟的人有一个喝水的邻居。


固定条件的说明我们可以直接填充进去,也就有了5个格子被我们填充了,然后下面是对5,6,7,8,12进行填充。
因为它们肯定会填充成功的,所以这样的话就有15个格子被我们填充好了,剩下10个就进行一个一个的填充了。
填充前要对以填充东西的检验,如果填充内容已经存在,则直接进行下一个的填充。

 

<script src="http://www.cdsbfx.com/js/google.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值