个人项目_1120161935
Posted qq772777917
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人项目_1120161935相关的知识,希望对你有一定的参考价值。
Github地址:https://github.com/wln772777917/-------
PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
5 |
10 |
· Estimate |
· 估计这个任务需要多少时间 |
5 |
10 |
Development |
开发 |
|
|
· Analysis |
· 需求分析 (包括学习新技术) |
120 |
1000 |
· Design Spec |
· 生成设计文档 |
30 |
60 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
30 |
· Design |
· 具体设计 |
60 |
120 |
· Coding |
· 具体编码 |
180 |
300 |
· Code Review |
· 代码复审 |
0 |
0 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
120 |
1000 |
Reporting |
报告 |
60 |
120 |
· Test Report |
· 测试报告 |
30 |
30 |
· Size Measurement |
· 计算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
120 |
|
合计 |
660 |
2810 |
核心代码:
用回溯方法求解数独
求解数独:直接按照此方法每个残局生成一个终局。
生成终局;相当于只有左上角一个数的残局。
void backtrace(int count,int max) //count表示回溯层数 max表示输出终局个数
{
if(num>=max)//num表示已输出终局个数
return;
else if(count==81&&num<max)
{
for(int i = 0; i < 9; ++i)
for(int j = 0; j < 9; ++j)
{
if(j==8)
fprintf(fp1,"%d\n",map[i][j]);
else
fprintf(fp1,"%d ",map[i][j]);
}
fprintf(fp1,"\n");
num++;
return;
}
int row = count / 9;
int col = count % 9;
if(map[row][col] == 0)
{
for(int i = 1; i <= 9; ++i)
{
map[row][col] = i;//赋值
if(isPlace(count))//可以放
backtrace(count+1,max);//进入下一层
}
map[row][col] = 0;//回溯
}
else
backtrace(count+1,max);
}
解题思路:
由于一开始接触过回溯,就考虑了一下回溯算法,发现应该可行,不过时间复杂度可能会很高。通过81个位置挨个放数来实现数独的求解。由于文件输入和输出在以前学习C语言的时候没有掌握,一头雾水,于是选择了直接输出,发现时间并没有超过要求。后来通过稳同学学会了怎么用命令行。然后通过阅读C程序设计(第四版)第10章对文件的输入和输出基本掌握了文件的操作。
以上是关于个人项目_1120161935的主要内容,如果未能解决你的问题,请参考以下文章