zifuchuan.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 891KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 7
    下载次数
  • 2010-04-15 15:40
    上传日期
求N个字符的最大公共子串,超高效率,希望能给大家带来帮助谢谢
zifuchuan.rar
  • N个字符串的最大公共子串
  • Debug
  • 求N个字符串的最大公共子串.obj
    268.3KB
  • 求N个字符串的最大公共子串.exe
    540.1KB
  • vc60.idb
    73KB
  • 求N个字符串的最大公共子串.pdb
    1MB
  • vc60.pdb
    108KB
  • 求N个字符串的最大公共子串.pch
    2MB
  • 求N个字符串的最大公共子串.ilk
    774.8KB
  • 求N个字符串的最大公共子串.ncb
    33KB
  • 求N个字符串的最大公共子串.CPP
    2.7KB
  • Array.h
    2.7KB
  • 求N个字符串的最大公共子串.OPT
    47.5KB
  • 求N个字符串的最大公共子串.DSW
    558B
  • 求N个字符串的最大公共子串.DSP
    3.5KB
  • 求N个字符串的最大公共子串.PLG
    1.3KB
内容介绍
#include<iostream> #include <string> #include "Array.h"//动态数组头文件 using namespace std; class N_str_maxsubstr { private: int strN;//记录字符串个数 public: Array<string> strarray;//用字符串数组来存字符串 string max_str;//保存最大公共子串 N_str_maxsubstr(int strn);//构造函数 void part_str();//匹配并找出最大公共子串 }; N_str_maxsubstr::N_str_maxsubstr(int strn):strarray(strn)//构造函数一些初始化工作 { strN=strn; max_str=""; } void N_str_maxsubstr::part_str()//匹配找最大公共子串 { unsigned int flag;//设置匹配成功以否的标志 /****************以下分解下标为0的字符串********************************/ //算法的核心 //首先将下标为0的字符串分解并把分解的每部分跟其他字符串进行匹配 //匹配成功且长度大于max_Str的则拿来更新max_str //其实并非需要所有的分解部分都进行匹配,假设1234s //它分解后的所有部分分别是 //1 //12 //123 //1234 //1234s //2 //23 //234 //234s //3 //34 //34s //4 //4s //s //刚开始1跟下标为k的字符串进行匹配,如果匹配失败,那么他就不继续跟别的字符串匹配了,因为字符串K不含有1,那么1就不是公共子串,直接break //而此时有没有必要将12,123,1234,1234s跟其他字符串匹配呢?显然没有必要,因为1已经匹配不成功,那么这些也肯定是不成功的,同样break //i变成2,假设当234s跟其他字符串都能匹配成功,那么此时max_Str="234s"长度为4,那么此后应该取多少长的字符去继续匹配呢?也就是说j应该等于多少? //i变成3了,是不是继续将3,34,34s,4,4s,s跟其他字符串进行匹配?显然不需要,因为这些长度都小于max_str,如果此后有长度大于max_str的 //则j取max_Str长度+1.如果没有大于max_Str的长度则程序结束 for(int i=0;i<strarray[0].length();i++) { if((max_str.length()+1)>(strarray[0].length()-i)) return; for(int j=max_str.length()+1;j<=(strarray[0].length()-i);j++) { string temp=strarray[0].substr(i,j);//取子串从i位置开始取j个字符 for(int k=1;k<strN;k++) { flag=strarray[k].find(temp,0);//在strarray[k]中查找跟temp匹配的子串,没有则返回npos if(flag==string::npos ) break; } if(flag==string::npos ) break; if(flag!=string::npos && temp.length()>max_str.length()) { max_str=temp; } } } } int main() { int strn=0; while(strn<2) { cout<<"请输入字符串个数(大于等于2):"; cin>>strn; } N_str_maxsubstr done(strn); for(int i=0;i<strn;i++) { cout<<"请输入第"<<i+1<<"个字符串:"; cin>>done.strarray[i]; } done.part_str(); if(done.max_str=="") cout<<"这"<<strn<<"个字符串没有公共子串"<<endl; else cout<<"这"<<strn<<"个字符串的最大公共子串为:"<<done.max_str<<endl; return 0; }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...