[CODE【VS】]江哥的DP题b

来源:互联网 发布:php相似图片搜索 api 编辑:程序博客网 时间:2024/06/06 08:24

原题


江哥解题报告:
这里写图片描述

我们不妨按照江哥dalao的思路来写:

设f(i,j)表示A中枚举到了第i个,B中枚举到了第j个,则: - a[i]=b[j]  f(i,j)=f(i-1,j-1)+1;//如果相等就可以增加一条线 - a[i]≠b[j] f(i,j)=max{f(i-1,j),f(i,j-1),f(a1,b1)};

a1,b1是要干什么呢?不妨看一看这张图
这里写图片描述

找到当前b[j]所对应的a中b[j]这个数的编号,记为a1
同理,找到当前a[i]在b中的a[i]这个数的编号,记为b1

所以如果他们满足上图所对应的可以交叉的规律,就状态转移一下,然后…
懂了吧!

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)using namespace std;const int Inf=1000000000+10;struct node{    int a,b;}a[100010];int f[1010][1010],flag[1010];int numbera[1010],numberb[1010];int main(){    file("b");    int i,j,k,n,m;    scanf("%d",&n);    for(i=1;i<=n;i++){        scanf("%d",&a[i].a);        numbera[a[i].a]=i;    }    for(i=1;i<=n;i++){        scanf("%d",&a[i].b);        numberb[a[i].b]=i;    }    for(i=1;i<=n;i++)        for(j=1;j<=n;j++)            if(a[i].a==a[j].b)                f[i][j]=f[i-1][j-1]+1;            else{                f[i][j]=max(f[i-1][j],f[i][j-1]);                int a1=numbera[a[j].b],b1=numberb[a[i].a];                if(a1<i && b1<j)f[i][j]=max(f[i][j],f[a1][b1]+2);            }    printf("%d\n",f[n][n]);    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机换卡了微信怎么办 淘宝退款成功后收到货怎么办 没收到货退款商家不处理怎么办 没收到货申请退款卖家不处理怎么办 京东已收到货却不处理退款怎么办 货退了卖家不退款怎么办 淘宝退了货卖家不退款怎么办 手机淘宝不显示图片怎么办 京东申请退款卖家不处理怎么办 企业网银冻结了怎么办 农行k宝坏了怎么办 手机检测不到u盾怎么办 农行有k宝怎么办信用卡 k米怎么点不了怎么办 c1驾照被扣3分怎么办 淘宝账号被黑了怎么办 淘宝卖家号虚假交易违规怎么办 扣扣申诉成功后怎么办 微信二维码收款异常怎么办 国际包裹被退回去了怎么办 京东账号手机号换了怎么办 换手机号了淘宝账号怎么办 qq登录id密码忘记怎么办 iphone商店密码忘记了怎么办 淘宝账号被限制登入怎么办 手机换号码了qq登不上怎么办 换手机了qq登不上怎么办 微信帐号和密码错误怎么办 高考生忘记登录密码怎么办 高考生登录密码丢了怎么办 高考志愿登录密码忘了怎么办 电视声音和画面不同步怎么办 苹果5s不能开机怎么办 红米手机老是闪退怎么办 苹果7plus打字卡怎么办 手机总是出现无响应怎么办 手机淘宝怎么打不开了怎么办 淘宝买东西卖家不同意退货怎么办 苹果自带浏览器不能上网怎么办 淘宝账号买不了东西怎么办 支付宝被限制登录怎么办