第一次个人编程作业

一,代码链接

github链接

二,整体流程

三,核心算法

  1. 基于动态规划的最长公共子串LCS
    LCS的基本实现思想是,取两个字符串的字符一一比对,若两者相同则令S [i] [j] = S [i] [j] + 1,否则S [i] [j] = max(S [i-1] [j] , S [i] [j-1]),这也是符合LCS的推导公式的。而得到最长相同子串的方法是通过数据结构的栈实现的,因为一般的实现会记录字符的方向,而输出字符串是要从S矩阵的右下角逆序输出,因此很契合栈的结构,其规则是:若S1[i] = S2[j],将字符入栈,否则对比S [i] [j-1]和S [i-1] [j]的大小,若前者不大于后者则遍历后者。
  2. 分词操作Tokenizer
    属于核心处理前的预处理,分词,就是基于字符串匹配、理解、统计、规则一系列的方式切好。
  3. 计算文本相似度的算法Jaro-Whinkle距离

四,性能分析

类的内存消耗

CPU运行时间

堆内存情况

五,PSP

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
Estimate 估计这个任务需要多少时间 20 25
Development 开发 500 300
Analysis 需求分析 (包括学习新技术) 300 180
Design Spec 生成设计文档 60 20
Design Review 设计复审 30 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 10
Design 具体设计 60 60
Coding 具体编码 300 210
Code Review 代码复审 30 30
Test 测试(自我测试,修改代码,提交修改) 180 120
Reporting 报告 90 120
Test Report 测试报告 60 100
Size Measurement 计算工作量 30 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
合计 1750 1245

六,总结

  • 怎么说呢,我是完全不会,还好宿舍里全是大佬,在大佬们的帮助下我总算是完成了。
  • 收获挺大,最重要的是我不会的开口问大佬很快都能解决,大大提高了学习效率。
  • 我存在的问题还是很大,说实话我还没有系统的学完过任何一门语言,所以动手都几乎不会动。接下来的时间我会先认真学完java,然后再把这次题目做一遍,争取真的自己完全掌握。
posted on 2020-09-17 19:35  ling零零  阅读(151)  评论(0)    收藏  举报