1. 程式人生 > >個人項目_1120161935

個人項目_1120161935

lib analysis lse spec mea 項目 planning OS span

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