python期末考试程序阅读题_python期末考试复习试卷

六、程序设计题 (16% , 每小题8分)

(1) 编写函数,检测给定的两维数组中是否有重复数据(已知该数组中保存了正整数):check_data(mat),如果没有重复,则函数返回真。要求算法的时间复杂度不大于O(n)。 def expand_list(list,num):

if len(list) > num:

return

for i in range(len(list),num):

list.append(0)

def check_data(list):

count = []

expand_list(count,10)

for line in list:

for var in line:

if var > len(count):

expand_list(count,var+1)

if count[var] == 0:

count[var] += 1

else:

return False

return True

(2) 设有一个背包能承受重量s(s>0), 又有n(n≥1)件物品, 其重量列表为

w=[w1,w2,...,wn]. 要从物品中挑选若干件放入背包, 使得放入的物品重量之和正好是s. 试设计递归函数f(w,s,n): 当有解时返回True,并显示所选物品是哪些; 无解时返回False。[提示:递归之处在于f(w,s,n)的真假等于f(w,s wn,n 1) or f(w,s,n 1)]

def f(w,s,n):

if s==0:

return True

elif (s<0) or (s>0 and n<1):

return False

elif f(w,s-w[n-1],n-1):

print w[n-1],

return True

else:

return f(w,s,n-1)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值