首页 > 其他分享 >0002-ALGO1006 拿金币

0002-ALGO1006 拿金币

时间:2023-03-11 11:00:09浏览次数:43  
标签:src 0002 格子 ALGO1006 goldCount 金币 int Scanner

试题 算法训练 拿金币

image

动态规划问题,选取上一步最优的结果加上此步可以获取的金币数量。

import java.util.Scanner;

/**
 * @author HuaWang135608
 * @date 2023.03.11 10:27:18
 * @description [试题 算法训练 拿金币](http://lx.lanqiao.cn/problem.page?gpid=T3000)
 */

public class A1006_TakeGold {
	
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in)) {
			// 数据输入
			int src_n = sc.nextInt();
			// 原始二维矩阵,存储金币数量
			// 简单起见,从 1 开始
			short[][] src = new short[src_n + 1][src_n + 1];
			for (int i=1; i<src.length; ++i) {
				for (int j=1; j<src[i].length; ++j) {
					src[i][j] = sc.nextShort();
				}
			}
			// goldCount[i][j] 表示到达此方格时最多能获得的金币数量
			int[][] goldCount = new int[src_n + 1][src_n + 1];
			// 结果
			int res;
			
			// 数据处理
			for (int i=1; i<src.length; ++i) {
				for (int j=1; j<src[i].length; ++j) {
					// 由于 Java 数组初始化时元素的默认数据均为 0
					// 因此可以简化为以下语句
					goldCount[i][j] = src[i][j] +  
							((goldCount[i - 1][j] > goldCount[i][j - 1]) 
									? goldCount[i - 1][j] : goldCount[i][j - 1]);
					// 只能从当前格子走到右侧或下侧的格子
					// 当前格子也只能来源于上侧([i - 1][j])和左侧([i][j - 1])
					// 选择拿到金币较多的格子作为从开头到当前格子的最优路径
				}
			}
			res = goldCount[src_n][src_n];
			
			// 结果输出
			System.out.println(res);
		}
	}

}

标签:src,0002,格子,ALGO1006,goldCount,金币,int,Scanner
From: https://www.cnblogs.com/huawang135608/p/17205477.html

相关文章

  • Test_Moduel AA0002
    1#使用字符串的format()方法,对输出数据项进行格式化2x1,y1=1.2,3.573x2,y2=2.26,8.74#输出15print('{:-^40}'.format('输出1'))#{:-^40}控制......
  • [SDOI2019] 移动金币 题解
    首先考虑一个状态什么时候是合法的。不难把游戏过程抽象为阶梯Nim博弈。根据阶梯Nim博弈的结论,先手必胜当且仅当奇数位上的异或和不为0。考虑将本题中每个棋子后面......
  • 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件失败,原因是出现
    检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件失败,原因是出现以下错误:8000401a因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码1.......
  • 0002图像的采样和量化
    目录数字图像数字图像以像素为元素的矩阵,f(x,y)是矩阵中x行,y列的像素值采样:空间分辨率就是普通的分辨率采样:亮度分辨率就是灰度级别,0到256灰度级图像的......
  • 00022.09 用字节流读写文件:FileInputStream和FileOutputStream
    用文件字节流读写文件目录文章目录​​用文件字节流读写文件目录​​​​前言​​​​一、InputStream​​​​二、使用字节流,来读取纯文本文件步骤​​​​三、复制任意......
  • 00022.09 用FileReader和FileWriter复制纯文本文件
    文章目录文章目录​​文章目录​​​​一、纯文本文件的复制​​一、纯文本文件的复制想一想要几个IO流是不是两个一个读,一个写......
  • 00022.08 Scanner的next()和nextLine()区别
    系列文章目录文章目录​​系列文章目录​​​​一、Scanner:​​​​二、使用步骤​​​​总结​​一、Scanner:Scanner:(1)next():遇到空白符就认为输入结束(2)nextLine():遇到换......
  • 00022.07 文件的IO操作(用FileReader读取、FileWriter 写入纯文本文件)
    文件的IO操作目录文章目录​​文件的IO操作目录​​​​前言​​​​一、读取一个纯文本文件​​​​二、使用步骤​​​​1、读取纯文本文件​​​​2、写入纯文本文件​​......
  • 00022.06 IO的概述
    系列文章目录文章目录​​系列文章目录​​​​一、IO是什么?​​​​二、IO的分类​​​​三、IO流有四大抽象的基类/超类/父类​​​​总结​​一、IO是什么?I:input,输入O:o......
  • 00023.07 IP地址、端口号在代码中的使用(IntAdddress、各种数据库注册端口号Oracle(1521
    系列文章目录文章目录​​系列文章目录​​​​一、IP地址​​​​二、端口号​​​​三、IP地址、端口号代码当中的表示​​​​总结​​一、IP地址IP地址分为IPV4和IPV6......