Q:你现在使用的代码规范是什么,  和上课前有什么改进?

A: 代码规范........自定义的代码规范算 代码规范吗。。。。。

 

Q:你的同伴有哪些优点 (列出至少三点), 和那些需要改进的地方 (列出至少三点)

A:

 

Q:你的代码从 作业2 到 作业3 经历了哪些变化?  哪些代码需要重构 (看关于代码重构的资料), 哪些需要重写,  为什么?

A:因为作业2是用c写的,作业3用c#(wpf)写的,我打算做一个界面交互,而非命令行的maxsum,所以作业3的代码是基本上都是重写的

 

Q:你的设计是如何保证 不同的 maxsum.exe 命令行最后在一个GUI 的界面显示的? 

A:由于做的是界面操作的应用,命令行显的不实用和麻烦,所以我没加入命令行这个功能,也就不存在【不同的 maxsum.exe 命令行最后在一个GUI 的界面显示的】的问题

 

Personal Software Process Stages

时间百分比(%)

实际花费的时间 (分钟)

原来估计的时间 (分钟)

计划

     

·         估计这个任务需要多少时间,把工作细化并大致排序

 0  0  0

开发

     

·         需求分析 (包括学习新技术)

 20  3h  1h

·         生成设计文档

 0  0  0

·         设计复审 (和同事审核设计文档)

 0  0  0

·         代码规范 (制定合适的规范)

 0  0  0

·         具体设计

 15  3h  2h

·         具体编码

 20  3h  6h

·         代码复审

 10  2h  2h

·         测试(自我测试,修改代码,提交修改)

 35  7h  4h

总结报告

     
     
       
       
Total 总计 100% 总用时 18h 总估计的用 15h

总结:

因为对WPF不太熟悉,所以这次作业很多的时间花在了学习wpf上

一开始挑选显示二维数组的Xaml控件,google了半天,感觉好像是 DataGrid更方便一点。

然后就用datagrid显示二维数组

单独改变DataGrid的某个cell的背景色不会,Google了好一会

然后因为这个DataDrid的行列都是动态确定的,数据绑定又Google了好一会.....

在花了不少的时间搞定UI这一块之后 ,很快搞定了【子矩阵的问题】和【连通子图】

运行的时候发现,由于上次作业【连通子图】写的太懒,就一个递归,什么剪枝都没有 ,于是代码的时间效率实在是  渣

又重新写了一个【连通子图】的类,并重做了优化,这点又花了很长时间

虽然时间效率还是很渣,但是勉强还是解出来

最后就是烦人的测试,Debug...文件输入的Debug,AnyMaxsum的Debug,Maxsum的Debug,UI显示的Debug。。。

然后现在总算是完成了

下面是anymaxsum的c#代码

通过 GetResultData()获取 数据

  1. namespace maxsum
  2. {
  3. class AnyMaxsum
  4. {
  5. bool[,] gTemp,gResult;
  6. bool isvselect=false, ishselect=false;
  7. int sumall=,n,m,cpuload,amax;
  8. public int sum=-, nsum = ;
  9.  
  10. int[,] a, asum, gmain;
  11. int[] dx={-,,,},dy={,-,,};
  12.  
  13. void init()
  14. {
  15. for (int i = ; i < m; i++)
  16. for (int j = ; j < n; j++)
  17. {
  18. gTemp[i, j] = gResult[i, j] = false;
  19. gmain[i, j] = ;
  20. }
  21.  
  22. }
  23.  
  24. public AnyMaxsum(int Arrm,int Arrn,int[,] ArrSource)
  25. {
  26. n = Arrn;
  27. m = Arrm;
  28. a = new int[m, n];
  29. asum = new int[m, n];
  30.  
  31. gTemp = new bool[m, n];
  32. gmain = new int[m, n];
  33. gResult = new bool[m, n];
  34.  
  35. a = ArrSource;
  36. for (int i = ; i < m; i++)
  37. for (int j = ; j < m; j++)
  38. {
  39. if (a[i, j] > ) sumall += a[i, j];
  40. asum[i, j] = sumall;
  41. if (amax < a[i, j]) amax = a[i, j];
  42. }
  43.  
  44. }
  45.  
  46. public void setvh(bool v,bool h)
  47. {
  48. isvselect = v;
  49. ishselect = h;
  50. }
  51.  
  52. public void GetResultData(ref int s,ref bool[,] aresult)
  53. {
  54. init();
  55. if (sumall <= )
  56. {
  57. int x = , y = , z = -;
  58. for (int i = ; i < m; i++)
  59. for (int j = ; j < n; j++) if (z < a[i, j])
  60. {
  61. z = a[i, j];
  62. x = i;
  63. y = j;
  64. }
  65. s = z;
  66. for (int i = ; i < m; i++)
  67. for (int j = ; j < n; j++) aresult[i, j] = false;
  68. aresult[x, y] = true;
  69. return;
  70. }
  71.  
  72. fany(, -, );
  73. for (int i = ; i < m; i++)
  74. for (int j = ; j < n; j++) aresult[i, j] = gResult[i, j];
  75. s = sum;
  76. }
  77. public int GetCpuLoad()
  78. {
  79. return cpuload;
  80. }
  81.  
  82. bool isinvh(int x,int y)
  83. {
  84. if (x >= && x < m && y >= && y < n)
  85. return true;
  86. return false;
  87. }
  88.  
  89. void ff(int x, int y)
  90. {
  91. int tx, ty, i;
  92.  
  93. gTemp[x, y] = true;
  94.  
  95. for (i = ; i < ; i++)
  96. {
  97. tx = x + dx[i];
  98. ty = y + dy[i];
  99.  
  100. if (isvselect)
  101. {
  102. if (tx == m) tx = ;
  103. if (tx == -) tx = m - ;
  104. }
  105.  
  106. if (ishselect)
  107. {
  108. if (ty == n) ty = ;
  109. if (ty == -) ty = n - ;
  110. }
  111.  
  112. if (isinvh(tx, ty) && !gTemp[tx,ty] && gmain[tx,ty]<)
  113. ff(tx, ty);
  114. }
  115. }
  116.  
  117. void fany(int x, int y, int z)
  118. {
  119. int tx, ty, tt, i, j;
  120.  
  121. cpuload++;
  122.  
  123. for (i = ; i <= x; i++)
  124. for (j = ; j < n; j++)
  125. if (gmain[i, j] == )
  126. {
  127. tx = i; ty = j;
  128. for (i = ; i < m; i++)
  129. for (j = ; j < n; j++) gTemp[i, j] = false;
  130. ff(tx, ty);
  131. for (i = ; i <= x; i++)
  132. for (j = ; j < n; j++) if (!gTemp[i, j] && gmain[i, j] == ) return;
  133. i = x + ;
  134. break;
  135. }
  136.  
  137. if (x == m - && y == n - )
  138. {
  139.  
  140. if (sum > z) return;
  141.  
  142. tt = ;
  143. for (i = ; i < m; i++)
  144. for (j = ; j < n; j++) if (gmain[i, j] == )
  145. tt++;
  146.  
  147. if (sum == z && tt > nsum) return;
  148.  
  149. for (i = ; i < m; i++)
  150. for (j = ; j < n; j++) if (gmain[i, j] == )
  151. gResult[i, j] = true;
  152. else gResult[i, j] = false;
  153.  
  154. sum = z;
  155. nsum = tt;
  156. return;
  157. }
  158.  
  159. ty = (y + ) % n;
  160. tx = x + (y + ) / n;
  161.  
  162. tt = sumall - asum[tx, ty] + z;
  163.  
  164. if (tt + a[tx, ty] >= sum)
  165. {
  166. gmain[tx, ty] = ;
  167. fany(tx, ty, z + a[tx, ty]);
  168. gmain[tx, ty] = ;
  169. }
  170. if (tt >= sum)
  171. {
  172. gmain[tx, ty] = ;
  173. fany(tx, ty, z);
  174. gmain[tx, ty] = ;
  175. }
  176. }
  177.  
  178. }
  179. }

 

下面是工程文件和截图和测试数据:

 

测试数据:我一共写了14组测试数据,加上xinz老师的4组,18组测试数据

http://files.cnblogs.com/lightz/MaxsumTestData.zip

 

VS2012_工程文件:maxsum软件 包含在文件的bin\Release 目录下

http://files.cnblogs.com/lightz/Maxsum_VS2012.zip

 

截图:

http://files.cnblogs.com/lightz/Maxsum%E6%88%AA%E5%9B%BE.zip

 

这里随便贴了几张,如下:

 

【现代程序设计】【homework-03】【11061027】的更多相关文章

  1. nlp homework 03

    NLP Homework 03 --冯煜博 题目描述 (盒子和球模型)假设有3个盒子,每个盒子里装有红白两种颜色的球,盒子里的红白球有下表列出,初始状态分布. 解答 1. 给出HMM模型 \(\mu= ...

  2. 标准C程序设计七---03

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  3. 现代程序设计homework——04

    题目: 详见:http://www.cnblogs.com/xinz/p/3341551.html 题目本身确实很难,“很难想到一个比较优雅的算法”,这是一个老师请来专门讲解这道题的大牛的原话.确实, ...

  4. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  5. 小兔JS教程(三)-- 彻底攻略JS回调函数

    这一讲来谈谈回调函数. 其实一句话就能概括这个东西: 回调函数就是把一个函数当做参数,传入另一个函数中.传进去的目的仅仅是为了在某个时刻去执行它. 如果不执行,那么你传一个函数进去干嘛呢? 就比如说对 ...

  6. vs2015c++/MFC入门知识全集/实例规范书籍视频下载孙鑫c++对话框计算器基础控件使用教程系列

    VIP教程可免费看.可免费下载前部分试看教程地址:http://dwz.cn/4PcfPk免费下载地址:http://dwz.cn/mfc888 本课程目录 67章 [MFC项目开发第01天]Wind ...

  7. 软工+C(9): 助教指南,持续更新...

    上一篇:提问与回复 下一篇:从命令行开始逐步培养编程能力(Java) 目录: ** 0x00 Handshake ** 0x01 点评 ** 0x02 评分 ** 0x03 知识储备 ** 0x04 ...

  8. 分享一套C++入门基础视频

    本课程从C++起步.用户无需不论什么计算机基础,仅仅须要懂的主要的电脑操作,既可学习本课程.本课程适合在校大学生,在职人员等,通过本课程的学习,学员可掌握C++\MFC\VC++server端.网络编 ...

  9. 20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

    20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中 ...

  10. 20145219 《Java程序设计》第03周学习总结

    20145219 <Java程序设计>第03周学习总结 教材学习内容总结 基本类型和类类型 基本类型:第三章中讲述的那几种,short.long.int.byte.double.char. ...

随机推荐

  1. ***用php的strpos() 函数判断字符串中是否包含某字符串的方法

    判断某字符串中是否包含某字符串的方法 if(strpos('www.idc-gz.com','idc-gz') !== false){ echo '包含'; }else{ echo '不包含'; } ...

  2. HDU4608+模拟

    简单的模拟题. 暴力枚举 /* 模拟 */ #include<algorithm> #include<iostream> #include<string.h> #i ...

  3. hdu 4336 Card Collector 容斥原理

    读完题目就知道要使用容斥原理做! 下面用的是二进制实现的容斥原理,详见:http://www.cnblogs.com/xin-hua/p/3213050.html 代码如下: #include< ...

  4. NFS - Network File System网络文件系统

    NFS(Network File System/网络文件系统): 设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): NFS只是一种文件系统,本身没有传输功 ...

  5. 15个必知的Android开发者选项

    Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理出15个 ...

  6. Ubuntu Telnet 配置(openbsd-inetd)

    Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.可以通过Telnet实现远程登录Ubuntu,但是Ubuntu 10.10默认没有安装Telnet,需 ...

  7. wsse:InvalidSecurity Error When Testing FND_PROFILE Web Service in Oracle Applications R 12.1.2 from SOAP UI (Doc ID 1314946.1)

    wsse:InvalidSecurity Error When Testing FND_PROFILE Web Service in Oracle Applications R 12.1.2 from ...

  8. Java面试题-并发工具

    1. 如何实现一个流控程序,用于控制请求的调用次数?

  9. chrome插件background.js 和 popup.js 交互

    要实现background.js 和 popup.js 之间的交互,首先需要先配置好 manifest.json文件,如: "background":{ //"page& ...

  10. CentOS6.5安装配置Samba

    CentOS6.5安装配置Samba 本文的场景是虚拟机运行CentOS6.,本机是Win7,现欲把CentOS上的一个文件夹共享出来,Win的机器可以读写. Samba与window连接需要使用Ne ...