📅  最后修改于: 2023-12-03 15:28:40.477000             🧑  作者: Mango
门电路一般是由与门,或门,非门等基本门电路组成的。现定义与门数为i,或门数为j,非门数为k,则门电路能承受的最大延迟t的公式为:t=1.2i + 0.8j + 0.6k。
现有n种基本门电路,在满足门电路最大延迟不超过t的情况下,最多可以使用多少个基本门电路?
输入的第一行包含三个整数i,j,k,表示一个门电路由i个与门,j个或门,k个非门组成。
第二行包含一个整数n,表示基本门电路的种数。
接下来n行,每行包含三个整数a,b,c,表示该种基本门电路包含a个与门,b个或门,c个非门。
输出一个整数,表示最多可以使用多少种基本门电路。
0 ≤ i, j, k ≤ 100 1 ≤ n ≤ 100 0 ≤ a, b, c ≤ 100
输入示例1:
2 1 1
5
1 1 1
1 1 0
1 0 1
0 1 1
0 0 1
输出示例1:
3
输入示例2:
2 2 2
5
1 1 1
1 1 0
1 0 1
0 1 1
0 0 1
输出示例2:
2
这是一道组合问题,可以用暴力枚举或者动态规划解决。
暴力枚举的思路是从n个基本门电路中选出若干个,计算延迟是否在限制范围内。时间复杂度为O(2^n * n)。
动态规划的思路是先将n个基本门电路按照延迟时间从小到大排序,然后对于每个基本门电路,记录延迟不超过t时能使用的最多的基本门电路种数。时间复杂度为O(n * t)。
由于本题数据范围较小,因此暴力枚举也可以通过本题。
代码示例: