为什么?我不李姐,悬棺
查看原帖
为什么?我不李姐,悬棺
947930
xiaoxiongbinggan楼主2024/8/19 10:38

为什么我把第 2727 行的判断条件放到第 2626 行的 l<i&&l<j 之后样例的结果就变了??

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int n,m,k;
char a[10000000],b[10000000];
int mod=1000000007;
int dp[510][51][51];
int sum[510][51][51];
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
        sum[i-1][0][0]=1;
        for(int j=1;j<=i;j++){
        	if(j<=m){
                for(int kk=1;kk<=j;kk++){
                	if(kk<=k){
					    for(int l=0;l<i&&l<j;l++){//26行
					    	if(a[i-l]==b[j-l]){//27行
					    		dp[i][j][kk]+=sum[i-l-1][j-l-1][kk-1];
								dp[i][j][kk]%=mod;
							}
		                }
		                sum[i][j][kk]=sum[i-1][j][kk]+dp[i][j][kk];
		                sum[i][j][kk]%=mod;                		
					}
            	}  		
			}
        }
    }
    cout<<sum[n][m][k];
	return 0;
}
2024/8/19 10:38
加载中...