「java增长序列」最长增长子序列java

博主:adminadmin 2022-12-24 16:39:05 63

本篇文章给大家谈谈java增长序列,以及最长增长子序列java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA动态规划,最长递增子序列的代码太难理解,求大神帮我讲解一下!

第一层的 if 逻辑表示 如果新的一个数A[i]对于 B[]中的数来说是递增的,则len加1,这是记录递增数列长度的主要逻辑。else中的逻辑保证B[]中的数列是最新的递增数列。

举个例子,如果A数组为[1,2,3,4,5, 3.1, 3.2, 3.3, 3.4]

当i=4时 len=4 B=[x,1,2,3,4,x] 循环结束后 len=5 B=[x,1,2,3,4,5] 第一层判断走if

当i=5时 len=5 B=[x,1,2,3,4,5] 循环结束后 len=5 B=[x,1,2,3,3.1,5] 第一层判断走else

当i=6时 len=5 B=[x,1,2,3,3.1,5] 循环结束后 len=5 B=[x,1,2,3,3.1,3.2] 第一层判断走else

当i=7时 len=5 B=[x,1,2,3,3.1,3.2] 循环结束后 len=6 B=[x,1,2,3,3.1,3.2,3.3] 第一层判断走else

...

其中第一层的else中做的工作就是把B从[x,1,2,3,4,5] 一步步变成 [x,1,2,3,3.1,3.2],最终B[]的最后一个元素变成3.2, 在下一次A[i]=3.3的时候,就又会走第一次if的逻辑(len加1)了。

java实现最大权重单增序列

import java.util.Scanner;

public class Main {

public static int data[] = null;

public static int weight[] = null;

public static int res[] = null;

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner scan = new Scanner(System.in);

System.out.println("输入序列个数:");

int n = 0;

n = scan.nextInt();

System.out.println("输入"+n+"个数(空格隔开):");

data = new int[n];

for (int i = 0; i  n; ++i) {

data[i] = scan.nextInt();

}

System.out.println("输入"+n+"个数的权重(空格隔开):");

weight = new int[n];

for (int i = 0; i  n; ++i) {

weight[i] = scan.nextInt();

}

doit(n);

int max = res[0];

int k = 0;

for (int i = 1; i  n; ++i) {

if (max  res[i]) {

max = res[i];

k = i;

}

}

System.out.println("最大权值:"+max);

System.out.println("序列为:");

print(k);

System.out.println();

}

public static void doit(int n) {

res = new int[n];

for (int i = 0; i  n;  ++i) {

res[i] = weight[i];

for (int j = 0; j  i; ++j) {

if (data[i]  data[j]  res[i]  weight[i]+res[j]) {

res[i] = weight[i]+res[j]; 

}

}

}

}

public static void print(int k) {

for (int i = k-1; i = 0; --i) {

if (res[i]+weight[k] == res[k]) {

print(i);

}

}

System.out.print(" "+data[k]);

}

}

输入样例:

 输入序列个数:

  5

输入5个数(空格隔开):

  1 4 2 3 9

输入5个数的权重(空格隔开):

  1 10 1 1 1

输出样例

  最大权值:12

 序列为:

     1 4 9

注:序列可能不唯一,就输出了一组

java怎么取orcle中的自增序列

很多方法,下面是一种

//公共代码:得到数据库连接  

public Connection getConnection() throws Exception{  

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  

    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:dbname", "username", "password");  

    return conn;  

}  

  

//先用select seq_t1.nextval as id from dual 取到新的sequence值。  

//然后将最新的值通过变量传递给插入的语句:insert into t1(id) values(?)   

//最后返回开始取到的sequence值。  

//这种方法的优点代码简单直观,使用的人也最多,缺点是需要两次sql交互,性能不佳。  

public int insertDataReturnKeyByGetNextVal() throws Exception {  

    Connection conn = getConnection();  

    String vsql = "select seq_t1.nextval as id from dual";  

    PreparedStatement pstmt =(PreparedStatement)conn.prepareStatement(vsql);  

    ResultSet rs=pstmt.executeQuery();  

    rs.next();  

    int id=rs.getInt(1);  

    rs.close();  

    pstmt.close();  

    vsql="insert into t1(id) values(?)";  

    pstmt =(PreparedStatement)conn.prepareStatement(vsql);  

    pstmt.setInt(1, id);  

    pstmt.executeUpdate();  

    System.out.print("id:"+id);  

    return id;  

}

java增长序列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于最长增长子序列java、java增长序列的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。