您的位置:首页 > 其它

第十六周 6.13 --- 6.19

2016-06-19 13:58 309 查看
6.19

我说15周怎么这么长...原来忘记新开一篇了...sigh 0-0

leetcode 144 Binary Tree Preorder Traversal

二叉树的前序遍历,非递归实现

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int maxn = 1005;
int dp[maxn][maxn][15][2];
int n,m,K;
char s[maxn],t[maxn];

void solve(){
memset(dp,0,sizeof(dp));
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(s[i] == t[j]){
for(int k = 1;k <= K;k++){
dp[i][j][k][0] = max(dp[i-1][j-1][k][0],dp[i-1][j-1][k-1][1])+1;
//    printf("dp[%d][%d][%d][0] = %d\n",i,j,k,dp[i][j][k][0]);
}
}
for(int k = 1;k <= K;k++){
dp[i][j][k][1] = max(max(dp[i-1][j][k][1],dp[i][j-1][k][1]),dp[i][j][k][0]);
//    printf("dp[%d][%d][%d][1] = %d\n",i,j,k,dp[i][j][k][1]);
}
}
}
printf("%d\n",dp
[m][K][1]);
}

int main(){
while(scanf("%d %d %d",&n,&m,&K) != EOF){
scanf("%s",s+1);
scanf("%s",t+1);
solve();
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: