社区讨论

50pts崩溃求调

P1439两个排列的最长公共子序列参与者 5已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@m2jwd6jy
此快照首次捕获于
2024/10/22 11:39
去年
此快照最后确认于
2025/11/04 23:49
4 个月前
查看原帖
不知道哪里错了,在力扣是过的
CPP
//力扣1143
#include<iostream>
using namespace std;
#define int long long
#define maxn 300010
int text1[maxn],text2[maxn],n;
int longestCommonSubsequence(int text1[], int text2[])
{
        int dp[n+1][n+1];
        dp[0][0] = text1[0] == text2[0] ? 1 : 0;
        for(int i = 1;i < n;i++) 
        {
            if(text1[i] != text2[0] && dp[0][i-1] == 0) 
                dp[0][i] = 0;
            else 
                dp[0][i] = 1;
        }
        for(int i = 1;i < n;i++) 
        {
            if(text2[i] != text1[0] && dp[i-1][0] == 0) 
                dp[i][0] = 0;
            else
                dp[i][0] = 1;            
            for(int j = 1;j < n;j++) 
            {
                if(text2[i] == text1[j]) 
                    dp[i][j] = dp[i-1][j-1] + 1;
                else 
                    dp[i][j] = max(dp[i-1][j],dp[i][j-1]);                
            }
        }
        return dp[n-1][n-1];
    }
main()
{
    cin >> n;
    for(int i = 0; i < n ;i++)
        cin >> text1[i];
    for(int i = 0; i < n ;i++)
        cin >> text2[i];
    cout << longestCommonSubsequence(text1,text2);
}

回复

14 条回复,欢迎继续交流。

正在加载回复...