【160406 20:00】二维矩阵中的最大联通子数组和

此篇讲的是截止时间至 4 月 6 日 20:00 的二维矩阵中的最大联通子数组和问题之小结。相应的题目,可以见王建民老师的博客中第 3 题:

http://www.cnblogs.com/wangjm1975/p/5411663.html

问题简析

这是一个最优化问题,在前两题的指引下,我们很容易会往动态规划方向去思考。不过很遗憾,本题用动态规划是解决不了的——用动态规划方法解决的,都会在某种情形下失效(得到错误答案)。事实上,虽然未经完整证明,但这可能是一个 NP 困难问题。因此,尝试用动态规划在多项式时间内解决,是不现实的。

评分标准

这次作业满分 10 分,采取扣分制与体验分相结合的方式。具体来说:

  • 每见到一处问题/缺陷,扣除该类问题/缺陷相应的分数;
  • 运行以下测试用例,程序每出现一个不符合预期的行为,扣 0.5 分;
  • 与此同时,还会有 \(\pm 1\) 分的体验分浮动:博文结构清晰、排版整洁、代码清爽等情况酌情加分,反之扣分。

测试用例及测试脚本

可在此下载:
https://files.cnblogs.com/files/ChenMeng0518/maxConnectiveSubArraySum.tar.gz

9 个测试用例的预期输出:

  1. 程序应当识别空矩阵,提示错误或抛出异常
  2. 程序应当识别不合法的输入,提示错误或抛出异常
  3. 单点及纯负数,应当返回 -1
  4. 单行,应当返回 16
  5. 应当返回 6
  6. 应当返回 49
  7. 应当返回 50
  8. 应当返回 135
  9. 应当返回 139

每个测试用例都有四种形式,以应对同学们读入文件的不同风格。因此,如果测试失败,请不要以「文件形式不同」的原因来找我。

普通形式:

2,
2,
1, 2
3, 4

空格形式:

2,
2,
1 2
3 4

全空格模式:

2
2
1 2
3 4

逗号形式:

2,
2,
1, 2, 3, 4

10 分

  • 作业迟交超过 24 小时
  • 未能完成任务

5 分

  • 没有提交代码(至少核心代码)

2 分

  • 作业迟交,但未超过 24 小时
  • 博文代码没有使用「代码模式」编辑(这很重要,已经是第 7 次作业了,因此提升权重,望引起重视)
  • 博文中,非代码内容使用了「代码模式」编辑(这很重要,已经是第 7 次作业了,因此提升权重,望引起重视)

1 分

  • 没有阐述设计思想
  • 没有运行结果截图
  • 没有总结分析;或总结中没有实际内容:对本次编程的分析或遇到的问题和解决方法

每项 0.5 -- 2 分

  • 额外的问题
    • Cpp 编程,忽略 namespace
    • Cpp 编程,使用 void main () 而不是 int main ()
    • Cpp 编程,标准库头文件都没有 .h 结尾
    • 不恰当的循环变量,可能引起数组越界,引发 core dump
    • new 了没有 delete 或者 malloc 了没有 free
    • 现阶段不要用非标准的函数(例如 sscanf_s),无谓地降低自己程序的可移植性。

评分结果

学号 截至上次作业得分小计 160406 20:00 小计
20122951 30 0.5 30.5
20132897 38 5.5 43.5
20132900 22.5 3.5 26
20132902 37.5 5.5 43
20132907 40 4.5 44.5
20132917 41.5 5 46.5
20132922 38 6 44
20132927 26.5 1.5 28
20132935 40.5 5.5 46
20132967 34.5 4.5 39
20132970 25.5 3.5 29
20132984 37.5 7 44.5
20132985 34 5.5 39.5
20133005 32 4.5 36.5
20133009 35.5 5.5 41
20133012 32.5 3.5 36
20133014 19 4.5 23.5
20133018 22 4.5 26.5
20133039 37 6.5 43.5
20133040 29 5 34
20133045 38 3.5 41.5
20133048 30.5 5 35.5
20133051 39 4.5 43.5
20133054 40 6.5 46.5
20133057 23.5 7 30.5
20133059 27 7 34
20133062 16.5 4.5 21
20133064 30.5 3.5 34
20133070 31 3.5 34.5
20133075 32 3.5 35.5
20133078 44 8 52
20133081 33.5 4.5 38
20133087 34 3.5 37.5
20133100 41.5 7.5 49
20132899 13 0 13
20132901 15 3.5 18.5
20132903 38.5 5.5 44
20132910 38.5 5.5 44
20132912 42 6 48
20132919 49.5 6.5 56
20132924 50.5 6.5 57
20132958 42 5.5 47.5
20132959 40 6 46
20132965 40 6 46
20132971 38 6 44
20132980 36.5 7 43.5
20133004 34 1.5 35.5
20133008 32 5.5 37.5
20133010 14 2.5 16.5
20133013 35 3.5 38.5
20133017 30.5 3.5 34
20133019 36 3.5 39.5
20133024 40.5 5.5 46
20133027 41.5 5.5 47
20133031 26.5 0.5 27
20133042 27 5.5 32.5
20133043 5 0 5
20133044 4.5 0 4.5
20133047 17 0.5 17.5
20133056 28 2 30
20133058 37.5 5.5 43
20133063 27 3.5 30.5
20133066 21.5 3.5 25
20133073 31.5 2.5 34
20133077 34.5 5.5 40
20133079 37.5 8 45.5
20133088 11 0.5 11.5
20133093 25.5 3.5 29
20133099 21 3.5 24.5
20133101 38.5 7.5 46

其他问题

如果有同学认为自己的作业,评分与预期有差;或者有新的补充。
那么建议你通过博客园站内短消息的方式联系我,或者在你的作业后回帖留言(记得 @ 我)。
你也可以在这篇博文下直接回复。不过不推荐你这样做……

软件工程的意义

欢迎参看下面的文章:
http://www.cnblogs.com/ChenMeng0518/p/5460435.html

posted @ 2016-05-16 08:39  孟晨  阅读(445)  评论(0编辑  收藏  举报