有下面一道程式設計的題目,如果用其他語言確實有點難辦,但是用python,呵呵!
寫程式幫***把2組學生配對。有兩組學生,a組跟b組。每個學生有自己的分數,分數為1到100的整數。乙個a組的學生能跟乙個b組的學生配成一對,條件是兩個學生分數差別不能超過某非負整數k。每一對包含乙個a組的學生跟乙個b組的學生。每個學生只能參與一對不能參與多對。程式需要從標準輸入(stdin)讀問題資料,包括3行。第一行有3個整數,第一是k,第二是a組的人數,第三是b組的人數。第二第三行分別是a組b組學生的分數,空各字元為定界符。答案為最多能配對的數量。程式需要把答案寫到標準輸出(stdout)。
【原始碼實現】
#!/usr/bin/python
#coding:utf8
import itertools
s_line1 = input()
s_line2 = input()
s_line3 = input()
l_line1 = s_line1.split(" ")
l_line2 = s_line2.split(" ")
l_line3 = s_line3.split(" ")
#第一行引數
k = int(l_line1[0])
a_num = int(l_line1[1])
b_num = int(l_line1[2])
#第二行引數
a_scores = [int(i) for i in l_line2]
#第三行引數
b_scores = [int(i) for i in l_line3]
min_ab =
max_ab =
min_ab_num = min(len(a_scores), len(a_scores))
if len(a_scores) == min_ab_num:
min_ab = a_scores
max_ab = b_scores
else:
min_ab = b_scores
max_ab = a_scores
fit_num = 0
for i in itertools.permutations(max_ab, min_ab_num):
fit_num = max(fit_num, len(list(filter(lambda x:x<=k, list(map(lambda x,y:abs(x-y), min_ab, list(i)))))))
print(fit_num)
python 排列組合
from scipy.special import comb,perm 計算排列數 a perm 3,2 計算組合數 c comb 45,2 print int a int c 6 990方法 說明種類 permutations 排列不放回抽樣排列 combinations 組合,沒有重複 不放回抽...
python實現排列組合
排列組合是組合學最基本的概念。所謂排列,就是指從給定個數的元素中取出指定個數的元素進行排序。組合則是指從給定個數的元素中僅僅取出指定個數的元素,不考慮排序。itertools參考文件 import itertools itertools.combinations iterable,r 引數說明 it...
Python排列組合模板
筆試題第乙個往往涉及到排列組合的問題,本文將給出乙個python語言的排列和組合的 模板,像記住快排一樣能夠在各種筆試面試演算法題中熟練默寫。46.全排列 77.組合 78.子集 本文依託這兩個題,並給出更為通用的排列組合模板,分析時間複雜度和空間複雜度,力圖完全掌握這兩個演算法。回溯法全排列 從s...