📄 form1.frm
字号:
Begin VB.CommandButton Command1
Caption = "编码"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 240
TabIndex = 7
Top = 2760
Width = 1335
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 6
Left = 9120
TabIndex = 6
Text = "0.05"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 5
Left = 7920
TabIndex = 5
Text = "0.08"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 4
Left = 6720
TabIndex = 4
Text = "0.1"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 3
Left = 5520
TabIndex = 3
Text = "0.12"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 2
Left = 4320
TabIndex = 2
Text = "0.15"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 1
Left = 3120
TabIndex = 1
Text = "0.2"
Top = 1680
Width = 1000
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 0
Left = 1920
TabIndex = 0
Text = "0.3"
Top = 1680
Width = 1000
End
Begin VB.Label Label4
Caption = "字符个数"
Height = 495
Left = 240
TabIndex = 28
Top = 120
Width = 1215
End
Begin VB.Label Label3
Caption = "输入字符:"
BeginProperty Font
Name = "宋体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 20
Top = 720
Width = 1455
End
Begin VB.Label Label2
Caption = "输入码值:"
BeginProperty Font
Name = "宋体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1080
TabIndex = 17
Top = 3960
Width = 1455
End
Begin VB.Label Label1
Caption = "输入概率:"
BeginProperty Font
Name = "宋体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 8
Top = 1800
Width = 1455
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a(12) As hafman
Dim x As Integer
Public Sub f()
Dim strl As String
Dim i, j As Integer
For i = 0 To x - 1
a(i).str = a(i).n
j = i
Do
j = a(j).pointer
a(i).str = a(i).str & a(j).n
Loop While j <> x * 2 - 2
Next
For i = 0 To x - 1
a(i).str = StrReverse(a(i).str)
Next
End Sub
Public Sub min()
Dim i, j As Integer
Dim min, p1, p2, p As Single 'p1 p2 是本次循环的最小的两个值
min = 1
For i = 0 To x * 2 - 2 '标记每次循环都要去掉两个值 ,增添一个值,用j标记那个增添的值
If a(i).p = 1 Then
j = i: Exit For
End If
Next
For i = 0 To x * 2 - 3
If a(i).p < 1 And a(i).n = 2 And a(i).p < min Then
min = a(i).p
End If
Next
For i = 0 To x * 2 - 3
If a(i).p < 1 And a(i).n = 2 And a(i).p = min Then
a(i).n = 0
p1 = a(i).p
a(i).pointer = j
End If
Next
min = 1
For i = 0 To x * 2 - 3
If a(i).p < 1 And a(i).n = 2 And a(i).p < min Then
min = a(i).p
End If
Next
For i = 0 To x * 2 - 3
If a(i).p < 1 And a(i).n = 2 And a(i).p = min Then
a(i).n = 1
p2 = a(i).p
a(i).pointer = j
End If
Next
If j <> 0 Then
p = p1 + p2
a(j).p = p
End If
End Sub
Private Sub Command1_Click()
Dim i As Integer
x = Text6.Text
For i = 0 To x * 2 - 2 ' 把概率初始化为一
a(i).p = 1
Next
For i = 0 To x * 2 - 2
a(i).n = 2 '把标记值初始化为二
Next
For i = 0 To x - 1 '输入概率
a(i).p = Text1(i).Text
Next
For i = 0 To x - 1 '输入字符
a(i).cha = Text5(i).Text
Next
For i = 0 To x - 1
min
Next
f
For i = 0 To x - 1
Text2(i).Text = a(i).str
Next
End Sub
Private Sub Command2_Click()
Dim str1 As String
str1 = Text3.Text
For i = 0 To x - 1
If str1 = a(i).str Then Text4.Text = a(i).cha
Next
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -