杭电1159

来源:互联网 发布:郑州java招聘 编辑:程序博客网 时间:2024/05/21 22:42
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;char  a[1000],b[1000],d[1000],e[1000];int c[1000][1000];int lcs(int n,int m){int i=0,j=0;for(i=0;i<=n;i++)c[i][0]=0;for(i=0;i<=m;i++)c[0][j]=0;for(i=1;i<=n;i++)for(j=1;j<=m;j++){if(a[i]==b[j])c[i][j]=c[i-1][j-1]+1;else c[i][j]=max(c[i-1][j],c[i][j-1]);}return c[n][m];}int main()//scanf  %s 读入一个字符串,遇空格、制表符或换行符结束。{         //scanf 如果要读入中间有空格的话,就要scanf("%s %s")      //scanf ("%c")接受空格和回车,就是说,他的功能与getchar()一样while(scanf("%s%s",&d,&e)!=EOF){a[0]=b[0]='0';int i=0,j=0;for(i=0;i<strlen(d);i++)a[i+1]=d[i];a[i+1]='\0';//手动读入字符串时一定要记得加‘\0’for(j=0;j<strlen(e);j++)b[j+1]=e[j];b[j+1]='\0';int n=strlen(a)-1,m=strlen(b)-1;int result=lcs(n,m);printf("%d\n",result);memset(b,'0',sizeof(b));//memset 是对字节进行赋值的,memset(a,1,sizeof(int)),sizeof(a);是整个数组                            //其实就是对4个字节赋值00000001 00000001 00000001 00000001,等于16843009                            //所以除了给整型数组赋值0外,其他用循环memset(a,'0',sizeof(a));memset(d,'0',sizeof(d));memset(e,'0',sizeof(e));}return 0;}

原创粉丝点击