算法之动态规划Redraiment的走法
分析和思路:其实就是找到从最左边开始以当前最右边节点结尾的最长递增子序列。注意,最长的子序列不一定包含最后一个节点。这是一个动态规划题。
1 #include "iostream" 2 #include "algorithm" 3 using namespace std; 4 5 6 //解题思路:从数组开始,dp【200】中dp【i】表示从i开始的最长递增序列,返回其中最大值即可 7 int main() 8 { 9 int number=0; 10 int dp[200]={1}; 11 for(int i=0;i<200;i++) 12 { 13 14 dp[i]=1; 15 } 16 while(cin>>number) 17 { 18 19 int a[200]={0}; 20 21 for(int i=0;i<number;i++){ 22 int temp=0; 23 cin>>temp; 24 a[i]=temp; 25 26 } 27 28 29 30 31 int max_number=0; 32 int res = 1; 33 for(int j=0;j<number;j++) 34 { 35 //for(int j=number;j-1>=0;j--) 36 { 37 int max1=dp[j]; 38 for(int t=0;t<j;t++)//注意,这里不能是t=i+1;t<number;t++ 啥的,注意理解这个题目的状态转移关系 39 { 40 41 // dp[j]=dp[j-1]; 42 if(a[j]>a[t]) 43 { 44 dp[j]=dp[t]; 45 46 dp[j]+=1; 47 if(max1<dp[j]) 48 { 49 max1=dp[j]; 50 } 51 } 52 53 } 54 dp[j]=max1; 55 res = max(res, dp[j]);//注意,dp[n]不一定就是最大值 56 } 57 58 // res = max(res, dp[i]);//注意,dp[n]不一定就是最大值 59 } 60 //sort(dp,dp+number); 61 cout<<res<<endl; 62 // cout<<dp[number-1]<<endl; 63 for(int i=0;i<200;i++) 64 { 65 dp[i]=1; 66 } 67 68 } 69 70 71 }
别人可以参考的代码:
1 #include "iostream" 2 #include "vector" 3 using namespace std; 4 int lengthOfLIS(vector<int>& nums) 5 { 6 int n = nums.size(); 7 if (n == 0) return 0; 8 vector<int> dp(n, 0); 9 int res = 1; 10 for (int i = 0; i < n; i++) 11 { 12 dp[i] = 1; 13 for (int j =i-1 ; j>=0 ; j--) 14 // for (int j = 0; j < i; j++) 15 { 16 if (nums[j] < nums[i]) 17 { 18 dp[i] = max(dp[i], dp[j] + 1); 19 } 20 } 21 res = max(res, dp[i]); 22 } 23 return res; 24 } 25 int main() 26 { 27 int number=0; 28 while(cin>>number) 29 { 30 31 int a[200]={0}; 32 vector<int> nums; 33 #if 1 34 for(int i=0;i<number;i++){ 35 int temp=0; 36 cin>>temp; 37 nums.push_back(temp); 38 39 } 40 #endif 41 int result=0; 42 result=lengthOfLIS(nums); 43 cout<<result<<endl; 44 } 45 46 47 }
主要为了自己学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix