我正在研究将8名销售人员分配到8个不同城市的问题,这些城市以下列格式表示。
该列代表销售人员,行代表城市。
1)分配的条件是: 1)每人只有一个城市 2)一旦城市被分配了销售人员,行和列以及对角城市就不能分配给另一个人
我无法从记忆中重新创建一个例子,对不起,但城市和销售人员的代表是正确的。
我想避免类似销售人员的行或列,我可以使用python中的排列,它会给我一组不同的城市而不会重叠,从那里我可以检查对角线值。
这是我的尝试。
import collections
import itertools
def display (l):
list_count = 0
k = ''
for i in l:
print i
list_count = list_count + 1
if list_count != len(l):
k = k + ','
cities = [1,2,3,4,5,6,7,8]
sales = [1,2,3,4,5,6,7,8]
print_list = []
count = 0
for i in itertools.permutations([1,2,3,4,5,6,7,8],8):
print_list.append(i)
if count == 2:
display(print_list)
#print print_list
#print '\n'
for j in range(8):
print_list.pop()
count = 0
count = count + 1
我被困在如何检查销售人员是否与另一位销售人员处于对角线位置,如果有人可以扩展我的方法,那将是很好的,想要任何其他解释,会有所帮助,我想要python,因为我在练习在它。