算法题之创造新世界(动态规划)
题目来源:牛客网
众所周知计算机代码底层计算都是0和1的计算,牛牛知道这点之后就想使用0和1创造一个新世界!牛牛现在手里有n个0和m个1,给出牛牛可以创造的x种物品,每种物品都由一个01串表示。牛牛想知道当前手中的0和1可以最多创造出多少种物品。
输入描述:
输入数据包括x+1行:
第一行包括三个整数x(2 ≤ x ≤ 20),n(0 ≤ n ≤ 500),m(0 ≤ m ≤ 500),以空格分隔
接下来的x行,每行一个01串item[i],表示第i个物品。每个物品的长度length(1 ≤ length ≤ 50)
输出描述:
输出一个整数,表示牛牛最多能创造多少种物品
输入例子:
3 3 1
1
00
100
输出例子:
2
Java实现:
import java.util.Scanner;public class Main
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int num_item = scanner.nextInt();int num_0 = scanner.nextInt();int num_1 = scanner.nextInt();int count = 0;int[] array_0 = new int[21];int[] array_1 = new int[21];for (int i = 1 ; i <= num_item; i++){char[] array = scanner.next().toCharArray();for (char anArray : array){if (anArray == '0')array_0[i]++;elsearray_1[i]++;}}scanner.close();//二维动态规划,背包问题int[][] dp = new int[501][501];for (int i = 1 ; i <= num_item; i++){for (int j = num_0 ; j >= array_0[i] ; j--){for (int k = num_1 ; k >= array_1[i] ; k--){dp[j][k] = Math.max(dp[j][k], dp[j-array_0[i]][k-array_1[i]]+1);// 输出每一步的结果//System.out.println("dp["+j+"]["+k+"] = Math.max(dp["+j+"]["+k+"], dp["+j+"-array_0["+i+"]]["+k+"-array_1["+i+"]]+1);");}}}System.out.print(dp[num_0][num_1]);}
}
转载于:https://www.cnblogs.com/shixiangwan/p/6730547.html
算法题之创造新世界(动态规划)相关推荐
- 面试必备算法题集之「动态规划」Ⅰ
题目来源:LeetCode-腾讯-动态规划 题库链接:LeetCode传送门 前言 这份题集来源于 LeetCode-腾讯-动态规划 ,怀着想学习动态规划的心(带着害怕面试被问到的恐惧 )做了第一份D ...
- 力扣算法题(11)动态规划
70-Climbing Stairs (fibonacci数的矩阵计算) //假设你正在爬楼梯,有n阶,每次可以爬1或2阶,有多少种方法可以爬到楼顶. class solution70{int res ...
- 一道看完答案你会觉得很沙雕的「动态规划算法题」
这道算法题其实并不难,如果你把文章从头到尾看完的话基本上能看懂,但如果你看到最后的话大概率会说一句:这是什么沙雕题目?! 题目来源于 LeetCode 第 877 号问题:石子游戏. 为了更好理解,我 ...
- 【常见笔试面试算法题12】动态规划算法案例分析
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 1.暴力搜索方法 2.记忆搜索方法 3.动态规划方法 4. ...
- 剪绳子 算法_[校招-算法题]动态规划
动态规划(Dynamic Programming)是面试中非常常见的一种算法,可以解决很多复杂问题. 核心算法: 定义状态:dp[i],一个数组,具体几维根据问题定. 状态转移方程:dp[i] = b ...
- 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 字符串处理+动态规划 合集!
Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本 ...
- [编程题] 创造新世界
题目来源:牛客网 [编程题] 创造新世界 众所周知计算机代码底层计算都是0和1的计算,牛牛知道这点之后就想使用0和1创造一个新世界!牛牛现在手里有n个0和m个1,给出牛牛可以创造的x种物品,每种物品都 ...
- 算法 64式 8、动态规划算法整理_第1部分_1到15题
1 算法思想 动态规划 1.1含义 把问题分解成多阶段或多个子问题,顺序求解各个子问题,最后一个子问题就是初始问题的解. 概念 阶段: 问题分成的顺序的几个环节.例如最长递增子序列中每个字符就是一个阶 ...
- 常考面试算法题类型总结(来自知乎)
作者:牛客网 链接:https://www.zhihu.com/question/24964987/answer/200681301 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
最新文章
- MATLAB AWGN信道 M-ary PSK 误码性能
- 50万数据生成6位数不重复字符串_JAVA技术分享:单号的生成
- 《幽灵行者》:近期最酷炫的赛博朋克游戏之一
- python回车换行怎么不行_使用Python编写换行符时避免写入回车'\r'
- 田永强:优秀的JavaScript模块是怎样炼成的
- HDFS文件权限不足导致Sqoop执行失败
- mysql 设置 0、1 用什么数据类型_什么是MySQL数据库?看这一篇干货文章就够了!...
- 【BABY夜谈大数据】基于内容的推荐
- linux下smtp服务器搭建
- 程序设计语言的基本概念
- KVM虚拟化技术(理论理解以及虚拟化平台搭建步骤)
- vc编程的ime输入法菜单开发
- 扫雷游戏(可展开,可标记)C语言实现
- Exchange Server 2013 VS 2016
- 134. 加油站(JS实现)
- torch.manual_seed()及其作用
- WebSocket+SockJs+STMOP
- P2550数组彩票摇奖
- [2019.3.17]BZOJ1109 [POI2007]堆积木Klo
- 开放式式商业模式_开放式办公室最符合行政人员而不是公司的最大利益