动态规划最长子串问题
2015-02-14 23:39
204 查看
今天研究了动态规划算法的基本思想和解题思路,自己测试写下这段代码,以验证vc/dev下编译通过,哈哈。。
#include <stdio.h>
#include <stdlib.h>
#define N 8
#define M 7
char x[N+1]={' ','a','b','c','d','g','f','a','c'};
char y[M+1]={' ','b','d','g','h','a','c','d'};
int z[N+1][M+1];
int h[N+1][M+1];
void Length()
{
int i,j;
for(i=0;i<N;i++)
z[i][0]=0;
for(j=0;j<M;j++)
z[0][j]=0;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
{
if(x[i]==y[j])
{
z[i][j]=z[i-1][j-1]+1;
h[i][j]=0;
}
else if(z[i-1][j]>=z[i][j-1])
{
z[i][j]=z[i-1][j];
h[i][j]=1;
}
else
{
z[i][j]=z[i][j-1];
h[i][j]=2;
}
}
}
void LCS(int i,int j)
{
if(i==0||j==0)
return;
if(h[i][j]==0)
{
LCS(i-1,j-1);
printf("%c ",x[i]);
}
else if(h[i][j]==1)
{
LCS(i-1,j);
}
else
{
LCS(i,j-1);
}
}
int main()
{
Length();
printf("%d\n",z
[M]);
LCS(N,M);
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define N 8
#define M 7
char x[N+1]={' ','a','b','c','d','g','f','a','c'};
char y[M+1]={' ','b','d','g','h','a','c','d'};
int z[N+1][M+1];
int h[N+1][M+1];
void Length()
{
int i,j;
for(i=0;i<N;i++)
z[i][0]=0;
for(j=0;j<M;j++)
z[0][j]=0;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
{
if(x[i]==y[j])
{
z[i][j]=z[i-1][j-1]+1;
h[i][j]=0;
}
else if(z[i-1][j]>=z[i][j-1])
{
z[i][j]=z[i-1][j];
h[i][j]=1;
}
else
{
z[i][j]=z[i][j-1];
h[i][j]=2;
}
}
}
void LCS(int i,int j)
{
if(i==0||j==0)
return;
if(h[i][j]==0)
{
LCS(i-1,j-1);
printf("%c ",x[i]);
}
else if(h[i][j]==1)
{
LCS(i-1,j);
}
else
{
LCS(i,j-1);
}
}
int main()
{
Length();
printf("%d\n",z
[M]);
LCS(N,M);
system("pause");
return 0;
}
相关文章推荐
- 动态规划-最长公共子串问题的实现
- 最大连续子序列和,乘积,最长递增子串,最长公共子串,子序列等问题(动态规划等)
- 动态规划解最长升序子串问题
- 动态规划问题解字符串最长子串问题
- 动态规划系列问题-最长公共子串
- 动态规划---最长上升子序列问题(O(nlogn),O(n^2))
- 动态规划之合唱队形问题(最长递增子序列变形)
- 动态规划-最长递增子序列/最长公共子序列/01背包问题
- 动态规划---最长上升子序列问题(O(nlogn),O(n^2))
- 【算法之动态规划(三)】动态规划算法之:最长公共子序列 & 最长公共子串(LCS),字符串相似度算法
- 动态规划之子序列与子串问题分析
- 经典动态规划问题--最长上升子序列 POJ--2533
- 动态规划-最长公共子串LCS
- 最长公共子序列LCS 与最长公共子串 两个问题的动态规化 解法
- 动态规划 字符串最大公共子序列以及最大公共子串问题LCS
- 最长不重复子串(动态规划最长不重复子串+Hash)
- uva 11400 - Lighting System Design(动态规划 最长上升子序列问题变型)
- 最长公共子串LCS--之动态规划
- 动态规划6:最长递增子序列问题
- 动态规划 最长公共子序列LCS、最长公共连续子串、最长重复子串