ACM PKU 3356 AGTC 简单动态规划-仿最长公共子序列

http://acm.pku.edu.cn/JudgeOnline/problem?id=3356

和最长公共子序列类似
如果s1[i]==s2[j]  f[i][j] =min{不操作; 在i中删除操作;在j中插入操作 }
否则                     f[i][j]=min{改变; 在i中删除操作;在j中插入操作 }

初始化的时候和最长公共子序列不同

Source Code

Problem: 
3356  User: lnmm 
Memory: 3992K  Time: 31MS 
Language: C
++  Result: Accepted 

Source Code 
#include 
"stdio.h"
int f[1002][1002];
int min(int a,int b,int c)
{
    
int temp;   
    temp
=a<=b?a:b;  
    
return c<=temp?c:temp;
}

void main()
{    int i,j;  
  
int len1,len2; 
  
char str1[1002],str2[1002];  
  
while(scanf("%d",&len1)!=EOF)
  
{
 
// scanf("%d",&len1);
  scanf("%s",str1+1);
  scanf(
"%d",&len2);
  scanf(
"%s",str2+1);
   
  
      
for(i=0;i<=len1;i++)          
          f[i][
0]=i;       
      
for(j=0;j<=len2;j++)    
          f[
0][j]=j;    
      
for(i=1;i<=len1;i++)     
          
for(j=1;j<=len2;j++)    
          

              
if(str1[i]==str2[j])   
          f[i][j]
=min(f[i-1][j-1],f[i-1][j]+1,f[i][j-1]+1);          
          
else  f[i][j]=min(f[i-1][j-1]+1,f[i-1][j]+1,f[i][j-1]+1);   
         }
     
          printf(
"%d\n",f[len1][len2]);  
  
  }

}

posted on 2007-11-16 14:36 流牛ζ木马 阅读(1911) 评论(1)  编辑 收藏 引用

评论

# re: ACM PKU 3356 AGTC 简单动态规划-仿最长公共子序列 2010-03-30 21:09 雪舞冰封

微软的神牛啊!!  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

公告

MY Email/MSN :mars1021@163.com QQ : 27402040 流牛ζ木马

常用链接

留言簿(6)

随笔档案

相册

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜