「java增长序列」最长增长子序列java
本篇文章给大家谈谈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增长序列的信息别忘了在本站进行查找喔。
发布于:2022-12-24,除非注明,否则均为
原创文章,转载请注明出处。