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()获取 数据

 namespace maxsum
{
class AnyMaxsum
{
bool[,] gTemp,gResult;
bool isvselect=false, ishselect=false;
int sumall=,n,m,cpuload,amax;
public int sum=-, nsum = ; int[,] a, asum, gmain;
int[] dx={-,,,},dy={,-,,}; void init()
{
for (int i = ; i < m; i++)
for (int j = ; j < n; j++)
{
gTemp[i, j] = gResult[i, j] = false;
gmain[i, j] = ;
} } public AnyMaxsum(int Arrm,int Arrn,int[,] ArrSource)
{
n = Arrn;
m = Arrm;
a = new int[m, n];
asum = new int[m, n]; gTemp = new bool[m, n];
gmain = new int[m, n];
gResult = new bool[m, n]; a = ArrSource;
for (int i = ; i < m; i++)
for (int j = ; j < m; j++)
{
if (a[i, j] > ) sumall += a[i, j];
asum[i, j] = sumall;
if (amax < a[i, j]) amax = a[i, j];
} } public void setvh(bool v,bool h)
{
isvselect = v;
ishselect = h;
} public void GetResultData(ref int s,ref bool[,] aresult)
{
init();
if (sumall <= )
{
int x = , y = , z = -;
for (int i = ; i < m; i++)
for (int j = ; j < n; j++) if (z < a[i, j])
{
z = a[i, j];
x = i;
y = j;
}
s = z;
for (int i = ; i < m; i++)
for (int j = ; j < n; j++) aresult[i, j] = false;
aresult[x, y] = true;
return;
} fany(, -, );
for (int i = ; i < m; i++)
for (int j = ; j < n; j++) aresult[i, j] = gResult[i, j];
s = sum;
}
public int GetCpuLoad()
{
return cpuload;
} bool isinvh(int x,int y)
{
if (x >= && x < m && y >= && y < n)
return true;
return false;
} void ff(int x, int y)
{
int tx, ty, i; gTemp[x, y] = true; for (i = ; i < ; i++)
{
tx = x + dx[i];
ty = y + dy[i]; if (isvselect)
{
if (tx == m) tx = ;
if (tx == -) tx = m - ;
} if (ishselect)
{
if (ty == n) ty = ;
if (ty == -) ty = n - ;
} if (isinvh(tx, ty) && !gTemp[tx,ty] && gmain[tx,ty]<)
ff(tx, ty);
}
} void fany(int x, int y, int z)
{
int tx, ty, tt, i, j; cpuload++; for (i = ; i <= x; i++)
for (j = ; j < n; j++)
if (gmain[i, j] == )
{
tx = i; ty = j;
for (i = ; i < m; i++)
for (j = ; j < n; j++) gTemp[i, j] = false;
ff(tx, ty);
for (i = ; i <= x; i++)
for (j = ; j < n; j++) if (!gTemp[i, j] && gmain[i, j] == ) return;
i = x + ;
break;
} if (x == m - && y == n - )
{ if (sum > z) return; tt = ;
for (i = ; i < m; i++)
for (j = ; j < n; j++) if (gmain[i, j] == )
tt++; if (sum == z && tt > nsum) return; for (i = ; i < m; i++)
for (j = ; j < n; j++) if (gmain[i, j] == )
gResult[i, j] = true;
else gResult[i, j] = false; sum = z;
nsum = tt;
return;
} ty = (y + ) % n;
tx = x + (y + ) / n; tt = sumall - asum[tx, ty] + z; if (tt + a[tx, ty] >= sum)
{
gmain[tx, ty] = ;
fany(tx, ty, z + a[tx, ty]);
gmain[tx, ty] = ;
}
if (tt >= sum)
{
gmain[tx, ty] = ;
fany(tx, ty, z);
gmain[tx, ty] = ;
}
} }
}

 

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

 

测试数据:我一共写了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. QT的Paint 系统

    下面对于QT的绘制系统做一个简要说明, 这个系统主要由三部分组成,  QPainter, QPaintDevice, QPaintEngine. QPainter 是一个绘制接口类,提供绘制各种面向用 ...

  2. R语言学习笔记:因子(Factors)

    因子提供了一个简单并且紧凑的形式来处理分类(名义上的)数据.因子用”水平level”来表示所有可能的取值.如果数据集有取值个数固定的名字变量,因子就特别有用. > g<-c("f ...

  3. laravel Authentication and Security

    Creating the user modelFirst of all, we need to define the model that is going to be used to represe ...

  4. poj 3126 Prime Path( bfs + 素数)

    题目:http://poj.org/problem?id=3126 题意:给定两个四位数,求从前一个数变到后一个数最少需要几步,改变的原则是每次只能改变某一位上的一个数,而且每次改变得到的必须是一个素 ...

  5. zoj 3351 Bloodsucker(概率 dp)

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4530 dp[i]表示现在存在i个吸血鬼要达成目标(全为吸血鬼)天数的数学 ...

  6. poj3378

    统计长度为5的上升序列个数, 容易想到O(n^2)的dp f[k,i]:=Σf[k-1,j] (1<=j<i,a[i]>a[j]) ans:=Σf[5,i] 但是显然会超时,需要考虑 ...

  7. Web打印控件smsx.cab使用说明

    在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下推荐一款web打印控件smsx.cab.    使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局 ...

  8. 4月数据库流行度排行榜 MySQL能否追上Oracle

    4月的数据库流行度排行榜可谓看点十足.闲言少叙,先上图: 前十名中,名次上升的都是NoSQL数据库,NoSQL凭借其对大数据处理的优势,发展越来越快.NoSQL是对众多非传统关系型数据库的总称,按存储 ...

  9. 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画

    之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...

  10. T-SQL查询进阶—理解SQL Server中的锁

    在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查询的.这些 ...