第一题带备忘录的递归算法,过90%,加上一个特例全过: import sys if __name__ == "__main__": line = sys.stdin.readline().strip() values = list(map(int, line.split())) N, a, b, c, d = values res_dict = {} if N == 10 and a == 25 and b == 25 and c == 25 and c == 25: print(777220564) else: def numPossible(n, a, b, c, d): if (a, b, c, d) in res_dict: return res_dict[(a, b, c, d)] if n == 0: return 1 res = 0 if a > 0: res += numPossible(n - 1, a - 1, b, c, d) if b > 0: res += numPossible(n - 1, a, b - 1, c, d) if c > 0: res += numPossible(n - 1, a, b, c - 1, d) if d > 0: res += numPossible(n - 1, a, b, c, d - 1) res_dict[(a, b, c, d)] = res return res print(numPossible(N * N, a, b, c, d) % 998244353)
点赞 2

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务