软件工程--------第三次作业
软件工程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
作业目标 | 实现一个数独命令行程序 |
作业正文 | 见下文 |
其他参考文献 | 百度 |
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
40 |
45 |
Estimate |
估计这个任务需要多少时间 |
35 |
40 |
Development |
开发 |
50 |
45 |
Analysis |
需求分析 (包括学习新技术) |
30 |
35 |
Design Spec |
生成设计文档 |
20 |
25 |
Design Review |
设计复审 |
25 |
20 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
40 |
30 |
Design |
具体设计 |
60 |
65 |
Coding |
具体编码 |
120 |
160 |
Code Review |
代码复审 |
30 |
45 |
Test |
测试(自我测试,修改代码,提交修改) |
120 |
125 |
Reporting |
报告 |
45 |
40 |
Test Repor |
测试报告 |
30 |
30 |
Size Measurement |
计算工作量 |
20 |
25 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
30 |
30 |
合计 |
570 | 600 |
1.解题思路
首先我们要了解什么是数独。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。我们可以先从三宫格开始,然后进阶到九宫格。其中三宫格,五宫格,七宫格可以不用考虑宫,但四宫格,六宫格,八宫格,九宫格需要考虑宫,宫中的每一个数字不能重复。每两个盘一间空格分开,每两个小格之间空格分开。代填入格子用零代替。输出有两种可能,有答案,和无解。
心路历程:
在两天之内做完三次的作业,对我来说还是不太理想,所以这次作业只做到一半,后面的代码检测由于自己能力的问题,没有完成。
这个数独的代码是以前老师布置作业的时候完成的,在进行代码检测的时候,下载Visual studio是花费时间过多,而且后续实验过程难度
超出了我的能力范围之外,所以没能完成自己的作业,还请老师见谅。这几天的经历很是刻骨铭心,一边要准备考试,还有各科的实验报
告,我的个人作业还有团队作业加在一起,每天做到凌晨四五点,一直不停的在写作业。之前从来没有过的事情,算是一种新的体验吧,
不过我以后真的不想再体验一次了。
附录:
数独代码
#include<stdio.h>
#include<string.h>
int maze[10][10];
int count = 0, min = 0, l = 0;
int n;
int flag;
int zou(int x, int y)
{
if (x == n - 2 && y == n - 2)
{
flag = 1;
if (l == 0)//记录第一次走到终点路线的长度,将他赋值给min。
{
min = count;
}
if (count < min)//将走到终点的长度与min来对比
{
min = count;
}
l++;
printf("%d", min);
return 0;
}
maze[x][y] = 1;
if (flag)return 0;
if (maze[x][y - 1] == 0)
{
count++;
zou(x, y - 1);
count--;
}
if (maze[x + 1][y] == 0)
{
count++;
zou(x + 1, y);
count--;
}
if (maze[x - 1][y] == 0)
{
count++;
zou(x - 1, y);
count--;
}
if (maze[x][y + 1] == 0)
{
count++;
zou(x, y + 1);
count--;
}
return 0;
}
int main()
{
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scanf_s("%d", &maze[i][j]);
}
}
flag = 0;
zou(1, 1);
if (!flag)
printf("No solution");
return 0;
}