创造新世界
来源:互联网 发布:怎么清除神武手游数据 编辑:程序博客网 时间:2024/04/29 03:47
众所周知计算机代码底层计算都是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
代码如下:
import java.util.Scanner;public class Main { static int[] n = new int[21]; static int[] m = new int[21]; static int X; static int N; static int M; static int[][] dp = new int[501][501]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); X = in.nextInt(); N = in.nextInt(); M = in.nextInt(); for ( int i = 1 ; i <= X ; i++){ String str = in.next(); char[] ch = str.toCharArray(); for ( int j = 0 ; j < ch.length ; j++){ if ( ch[j] == '0'){ n[i]++; }else{ m[i]++; } } } //二维动态规划,背包问题 for ( int i = 1 ; i <= X ; i++){ for ( int j = N ; j >= n[i] ; j--){ for ( int k = M ; k >= m[i] ; k--){ dp[j][k] = Math.max(dp[j][k], dp[j-n[i]][k-m[i]]+1); } } } System.out.print(dp[N][M]); in.close(); }}
1 0
- 创造新世界
- 【牛客网】创造新世界
- 【算法题】创造新世界
- 读《互联网3.0 云脑物联网创造DT新世界》有感
- [编程题]创造新世界/牛客网/Python/解题报告+源代码
- 新世界
- 创造
- 程序新世界
- 美丽新世界
- 美丽新世界
- 【收藏】新世界
- 美丽新世界!
- 发现新世界
- C2 的新世界
- 新世界,新博客
- 迟来的新世界
- 《黑客帝国》揭开的新世界
- 新世界的第一天
- 333. Largest BST Subtree
- 虚函数Hook代码
- Retrofit用法详解
- 八数码难题 codevs1225 a*
- Java内存模型
- 创造新世界
- HashMap简单使用
- swift3 用协议实现从XIB加载view
- Android不混淆没问题,混淆后一打开就报错
- mysql 内连接 左连接 右连接 外连接
- 2.JVM垃圾收集器与内存分配策略
- A Lot of Joy
- Sublime Text快捷键
- 使用Executors工厂类创建线程池