http://51ib.cn/show.aspx?infoid=199
那位大虾能告诉我有关这问题的算法吗?
用C#实现.

解决方案 »

  1.   

    利用数组和循环:
    用5个数组(数组名)表示5种属性,用1、2、3、4、5分别代替各种属性的具体取值
    数组的下标表示房间号,数组元素的取值表示某房间某属性的具体取值的代号
    房间号(即数组下标)也表示方位,房间号小的为左,大的为右,下标相邻即房间相邻房间      0        1        2        3       4国家      挪       德       瑞       英      丹 ---> a[5]
    颜色   绿       蓝       黄       红      白 ---> b[5]
    饮品   咖       水       奶       酒      茶 ---> c[5]
    香烟 blends   prince   dunhill   blue    pall ---> d[5]
    宠物   鱼       猫       狗       马      鸟 ---> e[5]取值   1        2        3        4       5 ---> 数组元素的取值条件化简:
    1 英---红 若a[i]=4,则b[i]=4
    2 瑞---狗 若a[i]=3,则e[i]=3
    3 丹---茶 若a[i]=5,则c[i]=5
    4 绿---在白左面 若b[i]=1,b[j]=5,则i<j
    5 绿---咖 若b[i]=1,则c[i]=1
    6 鸟---pall 若e[i]=5,则d[i]=5
    7 黄---dunhill 若b[i]=3,则d[i]=3
    8 中间房子---奶 c[2]=3 
    9 挪---第1间房 a[0]=1
    10 猫---有blends邻居 若e[i]=2,则d[i-1]=1 &brvbar;&brvbar; d[i+1]=1
    11 马---有dunhill邻居 若e[i]=4,则d[i-1]=3 &brvbar;&brvbar; d[i+1]=3
    12 酒---blue 若c[i]=4,则d[i]=4
    13 德---prince 若a[i]=2,则d[i]=2
    14 挪---有蓝邻居 ==〉b[1]=2
    15 水---有blends邻居 若c[i]=2,则d[i-1]=1 &brvbar;&brvbar; d[i+1]=1