九度OJ 1535 重叠的最长子串

本文详细介绍了一种改进的KMP算法实现方式,通过构造特殊字符串C来解决大规模数据匹配问题,利用C语言实现了该算法并成功应用于100万级别的数据匹配中。

转载请注明出处:http://blog.csdn.net/a1dark

分析:其实这题没有想象中的那么难、由于这题数量达到了100W、所以只能在线性时间内算出才行、咋一看貌似KMP扩展、其实只需要普通的KMP就可以解决、不过需要重新构造一个新字符串C=B+A、于是求出字符串C的next值、最后的值便是answer、

#include<stdio.h>
#include<string.h>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
const int maxn=1000010;
char str1[maxn];
char str2[maxn];
int next[2*maxn];
char str3[2*maxn];
int len1,len2;
int getnext(){
    int j=0,k=-1;
    next[0]=-1;
    int len=strlen(str3);
    while(j<len){
        if(k==-1||str3[j]==str3[k]){
            j++;
            k++;
            next[j]=k;
        }
        else k=next[k];
    }
    int ans=0;
    ans=min(len1,len2);
    ans=min(ans,k);
    return ans;
}
int main(){
    int n,m,k;
    while(scanf("%s%s",str1,str2)!=EOF){
        len1=strlen(str1);
        len2=strlen(str2);
        memset(str3,'\0',sizeof(str3));
        for(int i=0;i<len2;i++){
            str3[i]=str2[i];
        }
        for(int i=len2,j=0;i<len1+len2,j<len1;i++,j++){
            str3[i]=str1[j];
        }
        printf("%d\n",getnext());
    }
    return 0;
}
 
/**************************************************************
    Problem: 1535
    User: verticallimit
    Language: C++
    Result: Accepted
    Time:360 ms
    Memory:12740 kb
****************************************************************/


内容概要:本文详细介绍了一个基于MATLAB实现的RF-XGBoost混合集成模型,用于多特征分类预测的完整项目。该项目融合随机森林(RF)和极端梯度提升(XGBoost)两种算法的优势,构建了多层混合集成架构,涵盖数据预处理、特征筛选、降维、模型训练、调优、评估与可视化全流程。通过RF进行特征重要性分析和初步筛选,结合PCA降维后输入XGBoost进行精细建模,有效提升了高维、多类别数据的分类准确率与模型泛化能力。项目包含完整的代码实现、GUI界面设计、系统部署方案及未来优化方向,强调可解释性、工程化架构与实际应用落地。; 适合人群:具备一定机器学习基础和MATLAB编程经验的数据科学从业者、高校研究生、算法工程师及希望将AI模型应用于医疗、金融、制造等实际场景的技术人员。; 使用场景及目标:①解决高维多特征数据下的分类难题,如疾病诊断、金融风控、质量检测等;②学习如何结合RF与XGBoost构建高性能集成模型;③掌握从数据预处理到模型部署的全流程开发方法;④构建可解释、可扩展、具备GUI交互的企业级预测分析平台。; 阅读建议:建议读者结合文档中的代码逐模块运行与调试,重点理解RF特征筛选与XGBoost建模的衔接逻辑,关注参数调优、过拟合防控与多指标评估策略。同时可基于提供的GUI框架进行功能扩展,深入体会工程化系统的设计思路与实际部署要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N诺计算机考研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值