_Phoebe__ 2022-02-05 13:25 采纳率: 96.9%
浏览 26
已结题

这个代码有一点没看懂 想知道是什么意思捏

P1435 [IOI2000] 回文字串 / [蓝桥杯 2016 省] 密码脱落 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/problem/P1435


#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
char a[N],b[N];
int f[N][N],n;
int main()
{
    scanf("%s",a+1);//为啥不读入a捏
    n=strlen(a+1);//这里的n是谁的长度 为啥不是strlen(a+1)
    for(int i=1;i<=n;i++)b[i]=a[n-i+1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
                if(a[i]==b[j])f[i][j]=f[i-1][j-1]+1;
                f[i][j]=max(f[i][j],max(f[i][j-1],f[i-1][j]));//不太明白
            }
    printf("%d",n-f[n][n]);
}
  • 写回答

1条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-02-05 14:13
    关注

    1.为啥不读入a?
    如果读入a,则是从首地址a[0]开始存入字符串,还有就是下面for循环遍历是从a[1]开始的,所以此处读入a+1,输入直接从a[1]开始存即可。
    2.这里的n是谁的长度?
    就是上一句读入字符串的长度
    3.f[i][j]=max(f[i][j],max(f[i][j-1],f[i-1][j]));//不太明白
    关于这一句,就是找到最多(长)的,然后n-f[n][n],拿总的长度减去最多(长)的就是最少(短)的。

    以上仅供参考,如有任何疑问,可以评论回复,看到即回。
    希望对题主有所帮助!可以的话,点个采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 创建了问题 2月5日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳