在python内实现数组内四个地址不重复的元素之和等于目标数
实现代码如下
from random import *
m,p=0,10000
a,t=input("请输入一组数(以逗号隔开):"),eval(input("请输入一个目标值:"))
a = [int(n) for n in a.split(',')]#以逗号隔开输入值
#print(a)
list0=[]#有重复的解
lists=[]#无重复的解
#重新排序输入值
def findSmallest(arr):
smallest = arr[0] # 将第一个元素的值作为最小值赋给smallest
smallest_index = 0 # 将第一个值的索引作为最小值的索引赋给smallest_index
for i in range(1, len(arr)):
if arr[i] < smallest: # 对列表arr中的元素进行一一对比
smallest = arr[i]
smallest_index = i
return smallest_index
def selectionSort(arr):
newArr = []
for i in range(len(arr)):
smallest = findSmallest(arr) # 一共要调用5次findSmallest
newArr.append(arr.pop(smallest)) # 每一次都把findSmallest里面最小值删除并存放在新的数组newArr中
return newArr
#重新排序输入值
#输出list0
while p:
str = sample(a, 4)
str=selectionSort(str)
str_x = str[0] + str[1] + str[2] + str[3]
if str_x == t:
list0.append(str)
p-=1
#输出lists
for i in list0:
if i not in lists:
lists.append(i)
print(lists)
测试如下