回 帖 发 新 帖 刷新版面

主题:PLEASE HALP “八国圆桌问题”

在一次宴会上,有来自八个不同国家的宾客被安排在同一张圆桌就坐。A是中国人,会讲英语;B是意大利人,能讲西班牙语;C是英国人,会讲法语;D是日本人,能讲汉语;E是法国人,会讲德语;F是俄国人,懂意大利语;G是西班牙人,能讲日语;H是德国人,懂俄语。编程序安排他们的座位,使他们在各自的座位上能方便地跟两旁的客人交谈。
[fly]请帮助,急用,谢谢!!![/fly]

回复列表 (共22个回复)

11 楼

代码分两部分:

第一部份:

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

第一部份的作用就是:
把“A是中国人,会讲英语;B是意大利人,能讲西班牙语;C是英国人,会讲法语;D是日本人,能讲汉语;E是法国人,会讲德语;F是俄国人,懂意大利语;G是西班牙人,能讲日语;H是德国人,懂俄语。”存入数组。

第二部份才是算法:

dim id, cnt
id = 1 '第一个人随便坐。
while cnt < 8

    print chr$(64 + id);
    id = Guest(id)
    cnt = cnt + 1

wend

就这么一点。


楼主,
在刚才的讲解中,那么多的字我都在说什么呢?
这么多的字我都在讲,怎么把那个 人啊~国籍啊~语言啊~ 怎么存入电脑啊。
这道题的解题技巧,我认为就是在 数据怎么存储 这里。

个人愚见,不对的话,大家批评。

12 楼

还有,楼主。
能说说你的代码
CLS
FOR a = 1 TO 8: FOR b = 1 TO 8: FOR c = 1 TO 8
FOR d = 1 TO 8: FOR e = 1 TO 8: FOR f = 1 TO 8
FOR g = 1 TO 8: FOR h = 1 TO 8
IF a * b * c * d * e * f * g * h = 40320 THEN
IF ABS(a - d) = 1 AND ABS(a - c) = 1 THEN
IF ABS(b - f) = 1 AND ABS(b - g) = 1 THEN
IF ABS(c - e) = 1 AND ABS(d - g) = 1 THEN
IF ABS(e - h) = 1 AND ABS(f - h) = 1 THEN
PRINT a; b; c; d; e; f; g; h
END IF
END IF
END IF
END IF
END IF
NEXT h, g, f, e, d, c, b, a
END
是什么思路呢?

小弟我看不明白,尤其是:
IF a * b * c * d * e * f * g * h = 40320 THEN
IF ABS(a - d) = 1 AND ABS(a - c) = 1 THEN
IF ABS(b - f) = 1 AND ABS(b - g) = 1 THEN
IF ABS(c - e) = 1 AND ABS(d - g) = 1 THEN
IF ABS(e - h) = 1 AND ABS(f - h) = 1 THEN
PRINT a; b; c; d; e; f; g; h
END IF
END IF
END IF
END IF
END IF
这里看不明白。

13 楼

a$="A是中国人,会讲英国语;B是意大利人,会讲西班牙语;C是英国人,会讲法国语;D是日本人,能讲中国语;E是法国人,会讲德国语;F是俄国人,会讲意大利语;G是西班牙人,会讲日本语;H是德国人,会讲俄国语"
x=instr(a$,"是")
y=instr(x,a$,"人")
b$=mid$(a$,x+2,y-x)
for i=1 to 8
    print b$;" - ";
    x=instr(y,a$,"会讲")
    y=instr(x,a$,"语")
    b$=mid$(a$,x+4,y-x-4)+"人"
    y=instr(a$,b$)
next

14 楼

RE: 楼上的 moz 兄:

你贴出的代码测试过没有?
我运行的结果是:

    国人, - 人 - 人 - 人 - 人 - 人 - 人 - 人 - 

15 楼

看明白了,楼上 moz 的代码是正确的。
思路也和小弟我有些相似的哦。

16 楼

小弟觉得还是 moz 的代码更好。

17 楼

尊敬的副版主MOZ,您的A$里的内容,在QB运行后,出现的根本看不懂.能给我提供一个汉字输入系统的网址吗?

18 楼

[url=http://mozoho.gicp.net/web/ucdos98c.rar]请在晚上下载,三天内有效。UCDOS98[/url]

19 楼

使用方法:
1.下载 - 打开
2.解压到...D:\UCDOS  (当然,也可以是其他盘,但一定要在根目录下,这里以D盘举例)
3.开始 - 运行 - CMD
4.以下是DOS命令

D:
CD\UCDOS
RD16
RDFNT
KNL
按照QB的目录进入QBX

5.退出

Quit
Exit

20 楼

当然,其实我更建议你们用在EXCEL里的VBA中,
但是中文字符的长度需要作一些改变。

Sub moz2()
a$ = "A是中国人,会讲英国语;B是意大利人,会讲西班牙语;C是英国人,会讲法国语;D是日本人,能讲中国语;E是法国人,会讲德国语;F是俄国人,会讲意大利语;G是西班牙人,会讲日本语;H是德国人,会讲俄国语"
x = InStr(a$, "是")
y = InStr(x, a$, "人")
b$ = Mid$(a$, x + 1, y - x)
For i = 1 To 8
    k$ = k$ + b$ + " - "
    x = InStr(y, a$, "会讲")
    y = InStr(x, a$, "语")
    b$ = Mid$(a$, x + 2, y - x - 2) + "人"
    y = InStr(a$, b$)
Next
MsgBox k$
End Sub

我来回复

您尚未登录,请登录后再回复。点此登录或注册