📅  最后修改于: 2023-12-03 15:26:05.182000             🧑  作者: Mango
这是一道 UGC NET CS 2018 年 7 月 – II 的程序设计题,主要考察了解递归、回溯算法的能力,并且需要熟悉多线程编程的基本概念。
给出两个正整数 N 和 k,编写一个程序来生成一个大小为 N 的数组,其中每个元素都是从 1 到 k 的随机整数,且不能重复。具体实现细节见代码。
下面给出主要的思路:
下面是程序主要的代码片段:
import threading
import random
def generate_random_numbers(k):
return [random.randint(1, k) for _ in range(N)]
def check_numbers(arr, number):
if number not in arr:
arr.append(number)
def generate_array(N, k):
arr = []
def generate_numbers():
return generate_random_numbers(k)
def check_numbers_thread():
while True:
if len(arr) == N:
break
number = generate_numbers()
t = threading.Thread(target=check_numbers, args=(arr, number))
t.start()
t.join()
t1 = threading.Thread(target=generate_numbers)
t2 = threading.Thread(target=check_numbers_thread)
t1.start()
t2.start()
t1.join()
t2.join()
return arr
本题考察了程序员的多线程编程、递归算法和回溯算法的能力。通过实现这个程序,能够对多线程编程和算法有更深入的理解,提高自身的编程能力。