主题:[原创]分享:八国圆桌问题 - 个人思路分享
题: 来自 神倪在世 发的贴 [url=http://bbs.pfan.cn/post-288004.html]PLEASE HALP “八国圆桌问题”[/url]
在一次宴会上,有来自八个不同国家的宾客被安排在同一张圆桌就坐。A是中国人,会讲英语;B是意大利人,能讲西班牙语;C是英国人,会讲法语;D是日本人,能讲汉语;E是法国人,会讲德语;F是俄国人,懂意大利语;G是西班牙人,能讲日语;H是德国人,懂俄语。编程序安排他们的座位,使他们在各自的座位上能方便地跟两旁的客人交谈。
虽然是回人家的贴。不过,下面的内容是我原创的,所以就发个贴大家分享。
小弟的思路如下:
A 是中国人,会讲英语;
B 是意大利人,能讲西班牙语;
C 是英国人,会讲法语;
D 是日本人,能讲汉语;
E 是法国人,会讲德语;
F 是俄国人,懂意大利语;
G 是西班牙人,能讲日语;
H 是德国人,懂俄语。
小弟把不同的国家用不同的数字表示:例中国,汉语都用 1 表示:
A:1,3;
B:2,7;
C:3,5;
D:4,1;
E:5,8;
F:6,2;
G:7,4;
H:8,6。
把上面的结果用数组存起来:
dim Guest(1 to 8, 1 to 2)
Guest(1,1)=1: Guest(1,2)=3
...
因为上面的结果中,纵向的数是按次序的。
所以,直接把数组按下面的来存:
dim Guest( 1 to 8 )
Guest(1) = 3
Guest(2) = 7
Guest(3) = 5
Guest(4) = 1
Guest(5) = 8
Guest(6) = 2
Guest(7) = 4
Guest(8) = 6
要不就:
dim Guest( 1 to 8 )
for i = 1 to 8
Read Guest(i)
next i
DATA 3, 7, 5, 1, 8, 2, 4, 6
接下来,就按人所会的语言来先边上坐什么人了。
这道题设计得很巧妙,所有来宾的国籍与会的语言都可以形成一个圈。
所以,只要人的顺序决定下来,从哪里开始坐,方向如何都没有关系了。
dim id, cnt
id = 1 '第一个人随便坐。
while cnt < 8
print chr$(64 + id);
id = Guest(id)
cnt = cnt + 1
wend
好了,所以的代码为:
dim Guest( 1 to 8 )
for i = 1 to 8
Read Guest(i)
next i
DATA 3, 7, 5, 1, 8, 2, 4, 6
dim id, cnt
id = 1 '第一个人随便坐。
while cnt < 8
print chr$(64 + id);
id = Guest(id)
cnt = cnt + 1
wend
输出:ACEHFBGD
在一次宴会上,有来自八个不同国家的宾客被安排在同一张圆桌就坐。A是中国人,会讲英语;B是意大利人,能讲西班牙语;C是英国人,会讲法语;D是日本人,能讲汉语;E是法国人,会讲德语;F是俄国人,懂意大利语;G是西班牙人,能讲日语;H是德国人,懂俄语。编程序安排他们的座位,使他们在各自的座位上能方便地跟两旁的客人交谈。
虽然是回人家的贴。不过,下面的内容是我原创的,所以就发个贴大家分享。
小弟的思路如下:
A 是中国人,会讲英语;
B 是意大利人,能讲西班牙语;
C 是英国人,会讲法语;
D 是日本人,能讲汉语;
E 是法国人,会讲德语;
F 是俄国人,懂意大利语;
G 是西班牙人,能讲日语;
H 是德国人,懂俄语。
小弟把不同的国家用不同的数字表示:例中国,汉语都用 1 表示:
A:1,3;
B:2,7;
C:3,5;
D:4,1;
E:5,8;
F:6,2;
G:7,4;
H:8,6。
把上面的结果用数组存起来:
dim Guest(1 to 8, 1 to 2)
Guest(1,1)=1: Guest(1,2)=3
...
因为上面的结果中,纵向的数是按次序的。
所以,直接把数组按下面的来存:
dim Guest( 1 to 8 )
Guest(1) = 3
Guest(2) = 7
Guest(3) = 5
Guest(4) = 1
Guest(5) = 8
Guest(6) = 2
Guest(7) = 4
Guest(8) = 6
要不就:
dim Guest( 1 to 8 )
for i = 1 to 8
Read Guest(i)
next i
DATA 3, 7, 5, 1, 8, 2, 4, 6
接下来,就按人所会的语言来先边上坐什么人了。
这道题设计得很巧妙,所有来宾的国籍与会的语言都可以形成一个圈。
所以,只要人的顺序决定下来,从哪里开始坐,方向如何都没有关系了。
dim id, cnt
id = 1 '第一个人随便坐。
while cnt < 8
print chr$(64 + id);
id = Guest(id)
cnt = cnt + 1
wend
好了,所以的代码为:
dim Guest( 1 to 8 )
for i = 1 to 8
Read Guest(i)
next i
DATA 3, 7, 5, 1, 8, 2, 4, 6
dim id, cnt
id = 1 '第一个人随便坐。
while cnt < 8
print chr$(64 + id);
id = Guest(id)
cnt = cnt + 1
wend
输出:ACEHFBGD