首页 > 其他分享 >HJ103 Redraiment的走法

HJ103 Redraiment的走法

时间:2023-07-28 17:00:41浏览次数:52  
标签:Redraiment 走法 int max nums ans HJ103 public dp

1. 题目

读题

HJ103 Redraiment的走法

 

 

考查点

 

2. 解法

思路

 

代码逻辑

 

具体实现

import java.util.Arrays;

// 动态规划求最长递增子序列长度
public class Solution {
    public int longestIncreasingSubsequence(int[] nums) {
        // 数组为空,返回0
        if (nums == null || nums.length == 0) return 0;
        // 数组长度
        int n = nums.length;
        // dp数组,存储每个元素结尾的最长递增子序列长度
        int[] dp = new int[n];
        // 最长递增子序列长度
        int ans = 1;
        // 把dp数组的所有元素都设为1
        Arrays.fill(dp, 1);
        // 从左到右遍历原数组
        for (int i = 0; i < n; i++) {
            // 从左到右遍历i之前的所有元素
            for (int j = 0; j < i; j++) {
                // 如果nums[j] < nums[i],更新dp[i]
                if (nums[j] < nums[i]) {
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
            // 更新ans
            ans = Math.max(ans, dp[i]);
        }
        // 返回ans
        return ans;
    }

    // 测试
    public static void main(String[] args) {
        // 示例数组
        int[] nums = {10, 9, 2, 5, 3, 7, 101, 18};
        // 创建对象
        Solution solution = new Solution();
        // 调用函数
        int ans = solution.longestIncreasingSubsequence(nums);
        // 输出结果
        System.out.println("The length of the longest increasing subsequence is: " + ans);
    }
}

自行实现

public class HJ103 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
System.out.println(longestSeq(nums));
sc.close();
}

public static int longestSeq(int[] nums) {

int n = nums.length;
int[] dp = new int[n];
for (int i = 0; i < n; i++) {
dp[i] = 1;
}

int max = 1;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
max = Math.max(dp[i], max);

}
}
}

return max;

}
}

3. 总结

标签:Redraiment,走法,int,max,nums,ans,HJ103,public,dp
From: https://www.cnblogs.com/shoshana-kong/p/17548719.html

相关文章

  • 四国军棋 走法进阶
    1分析1.1如何分析炸弹司令已经吃了绿方大牌,绿方没有炸弹的话,应该是左侧连长或右侧营长躲避,如果有炸弹的话,可能炸弹往兵营进   2躲避2.1避免大子一线角落被吃右侧军长已经被绿方知道,左侧师长被碰,飞左测工兵应该用右侧的工兵飞,这样右边......
  • HJ103 Redraiment的走法(梅花桩递增可走的最多步数)_排序_动态规划
    思路:该题目符合,最优结果拥有最优子结果的特征。考虑用动态规划。通过循环获取每个参数作为最后一个桩的最优子结果,后面桩的结果为前一个桩的最优子结果+1。如梅花桩“251545”。参考高赞答案,代码如下1importsys2a=int(sys.stdin.readline().strip())3b=list(map(......
  • [算法]n阶台阶,一次走一步或两步,有多少种走法?
    递归实现.重要的是理解这个逻辑假设有f(n)种走法,当走到N-1阶台阶时,有f(n-1)种走法,再走一步走完。当走到n-2阶台阶时,有f(n-2)种走法,再走1+1或2,走完。其中走1+1和走到......
  • 马的走法
    描述在一个4X5的棋盘上,马的起始位置坐标(纵、横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。输入输入文件第一行为测试用例......