首页
学习
活动
专区
工具
TVP
发布

VB_Python代码对照算法百题(006)

VB_Python代码对照算法百题(006)

VB代码:

(2016年4月_浙江)17.某数据压缩方法描述如下:

1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;

2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;

3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身;

根据上述压缩方法,对应的解压缩方法示例如图a所示。

图a

小明编写了一个解压缩VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)……中,压缩数据的个数存储在变量n中,压缩数据显示在文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。

图b

(1)如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是。

(2)实现上述功能的VB程序如下。请在划线处填入合适代码。

Dim a(1 To 100) AsInteger '存储压缩数据,最大处理个数为100

Dim b(1 To 1000) As Integer'存储解压缩数据,最大处理个数为1000

Dim n As Integer '存储压缩数据的个数

Private SubForm_Load()

'压缩数据由上述压缩方法生成

'本过程用于读取压缩数据并存储在数组a,压缩数据个数存储在变量n中

'代码略

End Sub

Private SubCommand1_Click()

Dim pa As Integer '存储压缩数组当前处理位置

Dim pb As Integer '存储解压缩数组当前处理位置

Dim firstdata As Integer,count As Integer, i As Integer

pa = 1: pb = 1

Do While pa

firstdata = a(pa)

If firstdata 0 Then'示例1情况处理

b(pb) = firstdata

pa = pa + 1: pb = pb + 1

Else

count = a(pa + 1)

If count = 0 Then'示例2情况处理

b(pb) = 0

pa =①: pb = pb + 1

Else'示例3情况处理

For i = 1 To count

Next i

pa = pa + 3: pb = pb + count

End If

End If

Loop

Text2.Text =Str(b(1))

For i = 2 To③

Text2.Text = Text2.Text + "," +Str(b(i))

Next i

End Sub

参考答案:

(1)29

(2)①pa+2②b(pb+i-1)=a(pa+2)③pb-1

Python代码:

a=[25,0,0,0,7,78]

b=[]

pa = 0

##pb = 0

while pa

firstdata = a[pa]

if firstdata != 0:

b.append(firstdata)

pa = pa + 1

## pb = pb + 1

else:

count = a[pa + 1]

if count == 0:

b.append(0)

pa = pa + 2

## pb = pb + 1

else:

pa=pa+1

for i in range(a[pa]):

b.append(a[pa+1])

## print(b)

print('解压缩数据为:' )

print(b)

Python代码运行结果:

解压缩数据为:

[25, 0, 78, 78, 78,78, 78, 78, 78]

==================

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905G106L000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券