最大上升子序列和算法实现

需积分: 50 1 下载量 119 浏览量 更新于2024-09-03 收藏 717KB PDF 举报
"这是关于最大上升子序列和问题的两份代码实现,分别使用了不同的方法来求解。" 最大上升子序列和问题是一个经典的动态规划问题,在计算机科学和编程竞赛中经常出现,尤其在CSP-J (中国青少年信息学奥林匹克竞赛初赛) 和NOIP (全国青少年信息学奥林匹克联赛) 中是常见的题目类型。这个问题的目标是从一个整数序列中找到最长的上升子序列(LIS,Longest Increasing Subsequence)并计算其和。 第一个代码实现: 这个实现采用了自底向上的动态规划策略。数组`b[i][1]`存储原始序列中的元素,`b[i][2]`和`b[i][3]`暂时未使用,而`b[i][4]`用来存储以元素`b[i][1]`结尾的最大上升子序列和。从序列的末尾开始遍历,对于每个元素`i`,遍历所有大于它的后续元素`j`,如果`b[j][1] > b[i][1]`,则更新`b[i][4]`为`max(b[i][4], b[j][4] + b[i][1])`。这样,`b[i][4]`就始终保存着以`i`为结尾的最长上升子序列的和。最后,遍历整个数组`b`,找到最大值并输出。 第二个代码实现: 这个实现也使用了动态规划,但代码结构稍有不同。数组`a[i]`存储原始序列的元素,`f[i]`用于存储以`a[i]`结尾的最长上升子序列的长度。同样地,从序列的开头遍历,对于每个元素`i`,更新`f[i]`为`max(f[i], f[j] + 1)`,其中`j`是所有小于`i`且`a[j] < a[i]`的索引。这里,我们寻找的是序列长度而不是和。在遍历结束后,最长上升子序列的和可以通过将`f[i]`乘以对应的`a[i]`得到,因为`f[i]`表示以`a[i]`结束的子序列的长度。遍历`f`数组找到最大值`maxx`,然后输出。 两种实现都遵循了动态规划的核心思想,即利用已知信息来构建更复杂问题的解决方案,减少了重复计算。在实际应用中,这类问题的解决方案可以优化内存使用或时间复杂度,取决于具体的应用场景和数据规模。在编程竞赛中,理解并掌握这类算法是取得好成绩的关键。

以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 1: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 2: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 以太网适配器 VMware Network Adapter VMnet1: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::f249:3ccd:be91:7763%11 IPv4 地址 . . . . . . . . . . . . : 192.168.147.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::1000:5afe:cffe:7f93%19 IPv4 地址 . . . . . . . . . . . . : 192.168.37.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : IPv6 地址 . . . . . . . . . . . . : 240e:468:210:455b:f5f9:4649:822d:d46f 临时 IPv6 地址. . . . . . . . . . : 240e:468:210:455b:b582:bf6f:358d:3237 本地链接 IPv6 地址. . . . . . . . : fe80::4b6a:117f:c220:2af3%15 IPv4 地址 . . . . . . . . . . . . : 192.168.234.47 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : fe80::a480:15ff:fe98:36e0%15 192.168.234.15windowsIPconfig

2023-06-12 上传

项目突然跑不起来报这个错 Exception in monitor thread while connecting to server 10.18.21.79:27117 com.mongodb.MongoSocketReadException: Exception receiving message at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:536) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:421) at com.mongodb.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:290) at com.mongodb.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255) at com.mongodb.connection.CommandHelper.sendAndReceive(CommandHelper.java:84) at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:34) at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:91) at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:51) at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:127) at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:210) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.mongodb.connection.SocketStream.read(SocketStream.java:84) at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:547) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:418)

2023-06-09 上传

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.unionmed.unionhealth/com.unionmed.activity.restructure.ui.activity.user.aa.AddUserActivity}: java.lang.NullPointerException: Gson().fromJson(json, object : TypeToken<List<UserListBean>>() {}.type) must not be null at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3895) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8347) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) Caused by: java.lang.NullPointerException: Gson().fromJson(json, object : TypeToken<List<UserListBean>>() {}.type) must not be null at com.unionmed.activity.restructure.app.utils.CacheUtil.getUserList2(CacheUtil.kt:467) at com.unionmed.activity.restructure.ui.vm.AddUserViewModel.getUserList(AddUserViewModel.kt:27) at com.unionmed.activity.restructure.ui.activity.user.aa.AddUserActivity.initView(AddUserActivity.kt:34) at me.hgj.jetpackmvvm.base.activity.BaseVmActivity.init(BaseVmActivity.kt:47) at me.hgj.jetpackmvvm.base.activity.BaseVmActivity.onCreate(BaseVmActivity.kt:41) at me.hgj.jetpackmvvm.base.activity.BaseVmDbActivity.onCreate(BaseVmDbActivity.kt:20) at com.unionmed.activity.restructure.app.base.BaseActivity.onCreate(BaseActivity.kt:46) at android.app.Activity.performCreate(Activity.java:8085) at android.app.Activity.performCreate(Activity.java:8073) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3868) ... 11 more是什么错误

2023-07-11 上传