不同路径(数学动态规划)逆序输出(排序)分割回文串(字符串动态规划)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同路径(数学动态规划)逆序输出(排序)分割回文串(字符串动态规划)相关的知识,希望对你有一定的参考价值。
不同路径(数学、动态规划)
一个机器人位于一个 m x n_ _网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径?
示例 1:
输入:m = 3, n = 7
输出:28
示例 2:
输入:m = 3, n = 2
输出:3
解释:从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下
示例 3:
输入:m = 7, n = 3
输出:28
示例 4:
输入:m = 3, n = 3
输出:6
提示:
- 1 <= m, n <= 100
- 题目数据保证答案小于等于 2 * 109
解答:
class Solution
public int uniquePaths(int m, int n)
int[][] route = new int[m][n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (i == 0 || j == 0)
route[i][j] = 1;
else
route[i][j] = route[i - 1][j] + route[i][j - 1];
return route[m - 1][n - 1];
逆序输出(排序)
如:abcd1234,逆序输出:4321dcba
解答:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseString
public static void main(String[] args)
String input = "abcd1234";
char[] try1 = input.toCharArray();
for (int i = try1.length - 1; i >= 0; i--)
System.out.print(try1[i]);
分割回文串(字符串、动态规划)
给你一个字符串 s,请你将_ s _分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。
示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]]
提示:
- 1 <= s.length <= 16
- s 仅由小写英文字母组成
解答:
class Solution
public List<List<String>> partition(String s)
boolean[][] dp = new boolean[s.length()][s.length()];
for (int len = 1; len <= s.length(); len++)
for (int i = 0; i <= s.length() - len; i++)
if (len == 1)
dp[i][i] = true;
else if (s.charAt(i) == s.charAt(i + len - 1) && (len == 2 || dp[i + 1][i + len - 2]))
dp[i][i + len - 1] = true;
return solution(s, 0, dp);
public List<List<String>> solution(String s, int start, boolean[][] dp)
ArrayList<List<String>> list = new ArrayList<>();
if (start == s.length())
List<String> li = new ArrayList<>();
list.add(li);
return list;
for (int i = start; i < s.length(); i++)
if (dp[start][i])
String first = s.substring(start, i + 1);
for (List<String> li : solution(s, i + 1, dp))
li.add(0, first);
list.add(li);
return list;
以上是关于不同路径(数学动态规划)逆序输出(排序)分割回文串(字符串动态规划)的主要内容,如果未能解决你的问题,请参考以下文章