题 目 二:“爱因斯坦”高智商逻辑推理

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:26:05
题 目 二:“爱因斯坦”高智商逻辑推理
题目描述:a. 有五栋五种颜色的房子 b. 每一位房子的主人国籍都不同 c. 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物 d. 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料 条件提示: 1 英国人住在红房子里 2 瑞典人养了一条狗 3 丹麦人喝茶 4 绿房子在白房子左边 5 绿房子主人喝咖啡 6 抽 PALL MALL 烟的人养了一只鸟 7 黄房子主人抽 DUNHILL 烟 8 住在中间那间房子的人喝牛奶 9 挪威人住第一间房子 10 抽混合烟的人住在养猫人的旁边 11 养马人住在 DUNHILL 烟的人旁边 12 抽 BLUE MASTER 烟的人喝啤酒 13 德国人抽 PRINCE 烟 14 挪威人住在蓝房子旁边 15 抽混合烟的人的邻居喝矿泉水。问题是:谁养鱼 (1)瑞典人 (2)英国人 (3)挪威人 (4)德国人 (5)丹麦人。
基本要求:(1)根据a ~ d的要求以及1~15的条件编程实现问题求解;
(2)注意数据结构的选择,实物演示时要求讲出程序原理;
提高要求:(1)有很好的图形界面显示和较先进的算法;
(2)能将“房子-主人-饮料-香烟-饮料”的所有答案列出。
设计提示:本题答案唯一,一种常见的方法是根据给定条件用case或if语句穷举;此题数据结构的选取相当关键,数据结构选取失败将影响程序的实现;可以用递归来实现。

C#的程序

using System;
namespace netsafe.math
{
public class ayst
{
///
/// 问题中的所有元素
///
string[,] data= {{"黄房子", "蓝房子", "白房子", "红房子", "绿房子"},
{"挪威人", "英国人", "德国人", "丹麦人", "瑞典人"},
{"DUNHILL", "PRINCE", "混合烟", "PALL MALL", "BLUE MASTER"},
{"咖 啡", "矿泉水", "茶", "牛奶", " 啤酒 "},
{"鱼", " 恐龙", "马", "鸟", "狗"}};

///
/// answer用来存放答案
///
int[,] answer=new int[6, 6];
int[,] ALL=new int[6,122];
int count=1;
int nLevel = 0;
int[] List=new int[6];
public static void Main(string[] args)
{
ayst c=new ayst();
c.p(); ///生成全排列到all