照片
b 图片
现有的VB程序是用来判断某个图形是否可以一笔画出来的。 如果可以的话,它将通过穷举枚举边的顺序来找到一条合法路径。 例如,图c中有3条边。 第一个由①②连接,第二个由④③连接,第三个由③②连接。 如果边231的顺序是合法边顺序之一,则意味着首先绘制第二边。 ,然后追踪第三条边,最后追踪第一条边,对应路径④->③->②->①。 程序运行过程中,在文本框Text1中输入点的数量n,即表示图中编号为1~n的n个点。 在文本框 Text2 中输入点数。 每两个点代表一条边(确保输入是偶数个点),以“,”开头。 点击“一笔画”按钮后,将结果输出进去。如果可以一笔划完成,就会输出一条路径。 否则会提示“无法画一笔!”。 程序界面如图c所示:
c图片
(1) 在文本 1 中输入“4”,在文本 2 中输入“,2,3,1,2,2,4”。 输出结果为。
(2) 实现上述功能的VB程序如下。 请在下划线区域填写适当的代码。
调暗 n As , t As , m As , i As , j As
尺寸 As 、u As 、st As 、p As Long
变暗 a(21) As , b(11) As , f(11) As
Dim c(11) As '用于存储笔划每一边的序号
暗淡 As、ss As
子()
n = Val(文本1.文本)
s = Text2.Text: t = 0
对于 j = 1 至 Len(s)
ch = 中(s, j, 1)
如果 ch = "," 那么
b(a(t)) = b(a(t)) + 1
t=t+1
a(t) = 0
别的
a(t) = a(t) * 10 + Val(ch)
万一
下一个
①:m=t\2:ans=0
st = 1
对于 i = 1 到 n
如果 b(i) Mod 2 = 1 则 ans = ans + 1: st = i
接下来我
如果 ans = 0 或 ans = 2 那么
For p = 1 To m ^ m'边的穷举顺序
如果尝试(p) 那么
u = st: ss = Str(u)
对于 j = 1 至 m
If (a(c(j) * 2) u) And (a(c(j) * 2 - 1) u) 然后退出
若② u = a(c(j) * 2 - 1) 否则 u = a(c(j) * 2)
ss = ss + “->” + Str(u)
下一个
如果 j > m 则退出
万一
下一页
别的
ss = "一笔都画不出来!"
万一
.=SS
结束子
try(x As Long) As '生成边的访问序列并判断是否存在重复边
变暗为,y为长
y = x
对于 k = 1 至 m
c(k) = y Mod m + 1: y = y \ m
如果 f(c(k)) = x 则退出
③_____
下一个 k
如果 k > m 则 try = True 否则 try = False
结尾