Python的排列組合運用

2021-07-11 06:10:23 字數 1267 閱讀 4526

有下面一道程式設計的題目,如果用其他語言確實有點難辦,但是用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...