题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

//超出内存限制的暴力递归,有没有啥办法呢……
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<utility>
using namespace std;
map<pair<int,int>,int>map1;
int ism(char*s,int i,int j){//如果是一个密码就返回密码长度,如果不是就返回-1
    int flag=0;int n=j-i+1;
    while(i!=j){
        if(s[i]==s[j]){
            if((j-i)==1)break;
            i++,j--;
        }else {
        flag=1;break;
        }
    
 }
  if(flag){
      map1[{i,j}]=-1;
      return -1;
  }
    else {
        map1[{i,j}]=n;
        return n;
    }
}

int f(char*s,int i,int j){
    if(map1.find({i,j})!=map1.end()){
    return map1[{i,j}];
    }
    if(ism(s,i,j)>0){
//         map1[{i,j}]=ism(s,i,j);
        return ism(s,i,j);
    }
    else{
        return max(f(s,i+1,j),f(s,i,j-1));
    }
}
int main(){
    char s[2502];
    fgets(s,2502,stdin);
    cout<<f(s,0,strlen(s)-2);
}
全部评论

相关推荐

学历算污点吗?
小何和:快毕业了,BOSS上的od闻着味就来了
点赞 评论 收藏
分享
05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务