用C++编程求两个字符串的最长公共子串

要求:输入两个字符串,输出它们的最长公共子串,包括长度... 要求:输入两个字符串,输出它们的最长公共子串,包括长度 展开
 我来答
萧竹夜863
2008-11-25 · TA获得超过1276个赞
知道小有建树答主
回答量:597
采纳率:0%
帮助的人:0
展开全部
你好,全局变量用具有描述意义的名字,局部变量用短名字。函数采用动作性的名字。保持一致性。
缩进形式显示程序结构,使用一致的缩行和加括号风格。使用空行显示模块
充分而合理地使用程序注释 给函数和全局数据加注释。不要注释不好的代码,应该重写。不要与代码矛盾。
友好的程序界面,程序界面的方便性及有效性
不要滥用语言技巧 使用表达式的自然形式。利用括号排除歧义。分解复杂的表达式。当心副作用,像++ 这一类运算符具有副作用。
程序的健壮性:容错
模块化编程

1)应该特别注意程序的书写格式,让它的形式反映出其内在的意义结构。

程序是最复杂的东西(虽然你开始写的程序很简单,但它们会逐渐变得复杂起来),是需要用智力去把握的智力产品。良好的格式能使程序结构一目了然,帮助你和别人理解它,帮助你的思维,也帮助你发现程序中不正常的地方,使程序中的错误更容易被发现。

人们常用的格式形式是:逻辑上属于同一个层次的互相对齐;逻辑上属于内部层次的推到下一个对齐位置。

利用集成开发环境(IDE)或者其他程序编辑器的功能,可以很方便地维护好程序的良好格式。请注意下面这几个键,在写程序中应该经常用到它们:Enter键(换一行),Tab键(将输入光标移到下一个对齐位置——进入新的一个层次),Backspace键(回到前一个对齐位置——退到外面的一个层次)。

--------------------------------------------------------------------------------

2)用最规范的、最清晰的、最容易理解的方式写程序。注意人们在用C语言写程序的习惯写法,例如教科书中解决类似问题时所使用的写法,书中有许多极好的程序实例。在这里有一个关于程序模式的相关网页,里面也列出了一些常用的模式。

C++语言是一个非常灵活的语言,你可能在这里用许多非常隐晦的方式写程序,但这样写出的程序只能是作为一种玩意儿,就像谜语或者智力游戏。这些东西可以用于消磨时间,但通常与实际无缘。在我们的C++语言讨论组里提到过这种东西。

--------------------------------------------------------------------------------

3)在编程中,应仔细研究编译程序给出的错误信息和警告信息,弄清楚每条信息的确切根源并予以解决。特别是,不要忽略那些警告信息,许多警告信息源自隐含的严重错误。我们有许多办法去欺骗编译程序,使它不能发现我们程序中的错误,但这样做最终受到伤害的只能是自己。

--------------------------------------------------------------------------------

4)随时注意表达式计算过程和类型。注意运算符的优先级和结合顺序,不同类型的运算对象将怎样转换,运算的结果是什么类型的,等等。在必要的时候加上括号或显式的类型强制转换。

C++语言的运算符很多,优先级定义也不尽合理,很难完全记清楚,因此要特别注意。需要时查一查(不要怕麻烦,相关网页有运算符表),或者直接按照自己的需要加上几个括号。

--------------------------------------------------------------------------------

5)绝不去写依赖于运算对象求值顺序的表达式。对于普通二元运算符的运算对象,函数调用的各个实际参数,C++语言都没有规定特定求值顺序。因此,我们不应该写那种依赖于特定求值顺序的表达式,因为不能保证它一定得到什么结果。例如下面的表达式和函数调用都是不合适的,很可能产生你预料不到的结果:

scanf("%d %d", i++, a[i]);
m = n * n++;

--------------------------------------------------------------------------------

6)总保证一个函数的定义点和它的所有使用点都能看到同一个完整的函数原型说明。

--------------------------------------------------------------------------------

7)总注意检查数组的界限和字符串(也以数组的方式存放)的结束。C++语言内部根本不检查数组下标表达式的取值是否在合法范围内,也不检查指向数组元素的指针是不是移出了数组的合法区域。写程序的人需要自己保证对数组使用的合法性。越界访问可能造成灾难性的后果。

例:在写处理数组的函数时一般应该有一个范围参数;处理字符串时总检查是否遇到空字符'\0'。

--------------------------------------------------------------------------------

8)绝不对空指针或者悬空的指针做间接访问。这种访问的后果不可预料,可能造成系统的破坏,也可能造成操作系统发现这个程序执行非法操作而强制将它终止。

--------------------------------------------------------------------------------

9)对于所有通过返回值报告运行情况或者出错信息的库函数,都应该检查其执行是否正常完成。如果库函数没有完成操作(可能因为各种原因),随后的操作有可能就是非法的。这种错误也可能在程序运行中隐藏很长时间,到很后来才暴露出来,检查错误非常困难。

--------------------------------------------------------------------------------

10)在带参数宏的定义字符串中,一般应该给整个字符串和其中出现的每个参数都加括号。

C++语言预处理程序是个简单的文本替换程序,它根本不知道C++语言的语法结构、优先级规则等。不写括号有时会产生我们不希望的代换结果。

--------------------------------------------------------------------------------

11)所有外部变量名字、所有函数名字,应该只靠前6个字符就能够互相区分。因为有些老的编译程序只关注这些名字的前6个字符。如果不注意这个问题,就可能引起隐含的连接错误。

1. 要编写“好结构”程序
2. 力求程序清晰易读
3. 要写清楚,不要过于精巧
4. 要简单地、直截了当地说明你的用意
5. 写清楚,不要为了“效率”而丧失清晰性
6. 首先要保证清晰,再要求提高执行效率
7. 首先要保证正确,再要求提高编程技巧
8. 发挥计算机高效、准确的特长,让计算机多干活
9. 选用合适的常量标识符
10. 多使用命名类型标识符
11. 选取有实际含义的标识符作为变量名
12. 选用不致引起混淆的变量名
13. 在引用某变量时,应确保该变量已具有确定的值
14. 当有必要使用语句标号时,应使用有明确含义的语句标号
15. 使用括号以避免二义性
16. 选用能使程序更为简单数据表示法
17. 对重复使用的表达式,宜用变量标识符或公共函数来代替
18. 遵循推荐的缩进格式
19. 坚持按一定的缩进格式编写和键入程序
20. 缩进格式应能显示程序的逻辑结构
21. 程序的格式应有助于读者理解程序
22. 恰当地使用空格、空行以改善清晰度
23. 适当地使用注释,使程序自成文档
24. 确信注释含义与源代码相一致
25. 不注释不好的源代码,要重新编写新的源代码
26. 不宜注释过多,应恰如其分
27. 避免不必要的转移
28. 尽量少使用乃至不使用goto语句
29. 避免对实型数据作相等比较
30. 让程序按自顶向下的方式阅读
31. 采用三种基本控制结果-顺序结构、选择结构和循环结构
32. 保持程序的交互性,使易于运行程序
33. 妥善安排输入、输出,使输入、输出自明
34. 采用统一的输入格式
35. 使输入容易核对
36. 识别错误的输入
37. 若有可能,使用自由格式输入
38. 用个种可能的情况验证程序
39. 测试输入数据的合理性和合法性
40. 安排防故障措施
41. 确保输入不违反程序的限制
42. 要安排异常的输入以检验程序的健壮性
43. 在读取文件中的数据时。判定结束输入要使用文件结束标志
44. 贴切地安排输出格式
45. 使用I/O定向功能以增强输入、输出灵活性
46. 使用结构化编码技术
47. 模块化,使用子程序
48. 每个模块实现一定的功能
49. 局部化逻辑相关的实体
50. 分模块调试较大程序
51. 对过长程序代码使用覆盖技术及单元特性
52. 将经过调试和验证的单元归成自用库
53. 对已定义的递归数据结构使用递归函数或过程
54. 对某些算法可能使用非递归技术其程序编码更为简练、执行效率更高
55. 防止过程或函数调用中的副作用
56. 在调试和运行这两个不同阶段分别使用相应地合适的编译指示
57. 注意错误引起的中断 6071希望对你有帮助!

参考资料: . lftjggp

_華麗DE永恒
2008-11-25 · 超过12用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:40.5万
展开全部
搞两个数组 然后一个一个元素的比较。。。。 FOR会用不? 或者用指针也行啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tqticelb
2008-11-25 · 超过31用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:0
展开全部
动态规划问题,在google中搜索longest common subsequence一堆
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式