2020软件工程作业03

 

这个作业属于哪个课程https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
这个作业的目标 sudu
作业正文 见下文
其他参考文献 baidu

1.Github项目地址

https://github.com/zzzsunle/test1/blob/master/源.cpp

2.PSP表格

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

3.思路

拿到题目的时候楞了一下,觉得这个题目对自己的能力来说无疑是困难的,先去玩了几把数独,找到玩数独的技巧,然后让自己用代码写出来又是另外一种难事,哇 好难啊先去网上找找解题思路,先通过迭代推算出部分数字,然后通过DFS搜索解空间,迭代时排除了一部分不可能解以加速遍历。

 

4.关键代码

*从文件读取sudo矩阵,并且初始化possibility矩阵*/
void EnterAndInitial()

/*在sudo数组中,各行各列各九宫格中,根据possibility矩阵寻找可以唯一确定的空白格*/
void GetUniquity()

/*用于维护possibility矩阵*/
void DiminishPossibility()

/*根据possibility矩阵,重新填充sodu矩阵,并且判断本次迭代是否有新的产出及是否求解完毕*/
int NextState()

/*迭代,并且判断迭代是否可以完成求解*/
bool IsCalculatable()

/*用于判断某矩阵是否违背sodu规则*/
bool IsRational()

/*深度优先搜索,并判断是否存在解*/
bool DFS(char depth)

迭代 

bool IsCalculatable(){

	int ptr = 0;
	char rest = 81, lastStepRest = 81;
	//如果迭代至没有空白块,则本sudo谜题已解决
	while(rest>0){
		//z389x56y4,若y不可能为7,x不可能为7,则z=7
		GetUniquity();
		//z389x56y4,可知xyz都不可能为3
		DiminishPossibility();
		//找到只有一个可能的单元格,填充,计算剩下几个空白块
		rest = NextState();
		//如果上一次剩余空白块和本次迭代剩余空白块数量相等,则继续迭代无效,需要搜索解空间
		if(lastStepRest != rest) lastStepRest = rest;
		else{
			//在进行DFS前,先将所有空白块标记进入hash表
			for(int cnt1=0; cnt1<9; cnt1++) for(int cnt2=0; cnt2<9; cnt2++) if(!sodu[cnt1][cnt2]){hash[ptr][0]=cnt1; hash[ptr++][1]=cnt2;}
			hash[ptr][0] = -1; hash[ptr][1] = -1;
			return false;
		}
	}
	return true;
}
5.改进程序性能


6.流程图

7、总结
这次代码应该是没有成功,运行出来不太对劲然后用VS测试的时候简直就是一脸懵,它的条条一动不动 我特别羡慕别的同学有那么多红红绿绿的杠杠,我好难啊,它也不报错 就是运行不了,
还是自己太菜了吧 ,行吧,要好好学习呀,留下了没有知识的泪水。
8.自评



 

posted @ 2020-03-29 16:03  skyzzzz  阅读(313)  评论(0编辑  收藏  举报