1.计算机编程实际上就是0和1资源的使用,那么,假设给出可以支配的m个0和n个1.同时有一些只有0和1组成的字符串。我们的任务就是用这些0和1去组成这些字符串,输出最多能组成多少个字符串。每一个0和1只能使用一次。
2.实现实力样例
(1).例1
输入: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3
输出: 4
解释: 用5个0和3个1可以至多组成4个给定字符串,分别为“10”、”0001”、”1”、”0”。
(2)例2
输入: Array = {"10", "0", "1"}, m = 1, n = 1
输出: 2
解释: 比起只组成一个”10”来说,组成”1”、”0”两个字符串才是最优解。
这道题的来源是一道比较经典的动态规划题目,名为二维费用背包问题。原本的问题为“设有n件物品,每件物品想要放入背包有两种不同的费用,同时每件物品有着不同的价值。两种费用加和可付出的最大值(也即背包的两种容量)给定。求解将哪些物品装入背包可使价值总和最大。”
我们将现在的题目转换一下,将给定的字符串看作要放入背包的物品,每件物品的两种不同花费认为是每个字符串0和1的个数,而m和n可以看作背包的两个容量。