题目:
给定两个只包含数字的数组A,B,调整数组A里面数字的顺序,使得尽可能多的 A[i] > B[i]。数组 A和B中的数字各不相同。输出所有可以达到最优结果Q的A数组的数量
输入描述:
输入的第一行是数组a中的数字,其中只包含数字,每两个数字之间相隔一个空格,a 数组大小不超过 10输入的第二行是数组b中的数字,其中只包含数字,每两个数字之间相隔一个空格,b数组大小不超过 10输出描述
输出所有可以达到最优结果的 A数组数量
示例1:
*输入:
13 8 20
9 12 7
输出:
说明:
最优结果只有一个,A=[13,20,8],故输出 1
示例2:
输入:
11 12 20
10 13 7
输出:
说明:有两个A数组的排列可以达到最优结果[12,20,11]和[11,20,12],故输出 2。
def main():
a = list(map(int, input().split()))#定义数组
b = list(map(int, input().split()))
a.sort()
max_bigger_count = 0
ans = 0
def dfs(level, used, bigger_count):
nonlocal max_bigger_count, ans
if level >= len(a):
if bigger_count > max_bigger_count:
max_bigger_count = bigger_count
ans = 1
elif bigger_count == max_bigger_count:
ans += 1
return
for i in range(len(a)):
if used[i]:
continue
if i > 0 and a[i] == a[i - 1] and not used[i - 1]:
continue
used[i] = True
dfs(level + 1, used, bigger_count + (a[i] > b[level]))
used[i] = False
dfs(0, [False] * len(a), 0)
print(ans)
if __name__ == "__main__":
main()