題目鏈結位址
github鏈結位址
難度瓶頸
最終選擇
改進版本
只是生成數獨終盤,不考慮附加作業,就沒有考慮類,只是函式。
array[0][0] = 7;
basic.erase(7);//basic為集合名稱
if (basic.size() == 0)
}for (int k = 0; k <= row; k++)
} }else
} }
版本二:
void creatarray()
btnarray[0] = 7;
btnarray[6] = 1;
for (int i = 0; i<20; i++)
}
bool checkbtnarray(int row)
} //陣列數字選遍,仍無合適數字,則此陣列不可用
if(judge == 0)
return false;}}
return true;
}
僅針對版本二,版本一無力回天了。
char* path = "./sudoku.txt"; // 建立檔案的相對路徑
ofstream fout(path);
void print()
fout << endl;
} fout << endl;
}
看了大佬**,用的putchar,果斷換,也用printf試過,後者慢一些
freopen("./sudoku.txt", "w", stdout);
void print()
puts("");
} puts("");
}
執行截圖,100萬資料:七分多鐘
printf函式所佔比例:
for(int j = 0;j < 9;j++)
}
將已經正確填入的數字置0,加以判斷
for (int j = 0; j < 9; j++)
} }
這樣也保證同行不會有重複,checkone注釋掉同行檢查
/*
//同行不可重複
for (int i = 0; i < row; i++)
*/ //同格不可重複
for (int i = (col / 3) * 3; i < col; i++)
} //同列不可重複
for (int i = 0; i < (col / 3) * 3; i++)
執行截圖,100萬資料,跑了六分多,快了一分多,checkone與checkbtnarray佔比有所下降,但是依舊很大,其中消耗最大的函式是checkone
預估耗時(分鐘)
實際耗時(分鐘)
planning
計畫10
20· estimate
· 估計這個任務需要多少時間
1020
development
開發630
960· analysis
· 需求分析 (包括學習新技術)
150200
· design spec
· 生成設計文件100
· design review
· 設計複審 (和同事審核設計文件)
3010
· coding standard
· **規範 (為目前的開發制定合適的規範)
2010
· design
· 具體設計
120120
· coding
· 具體編碼
180240
· code review
· **複審
60300
· test
· 測試(自我測試,修改**,提交修改)
6080
reporting
報告40
70· test report
· 測試報告
2060
· size measurement
· 計算工作量
2010
· postmortem & process improvement plan
· 事後總結,並提出過程改進計畫
120180
合計680
1050
軟體工程第二次作業
github 位址 我剛開始打 的時候覺得打完就好,能過樣例就ok。經歷過一段時間後會發現有可能樣例過了其他測試點全錯,所以就會開始多測試幾組資料,希望自己的 能夠盡量準確。當準確性開始有保障後,我就會去思考程式本身是不是可以進一步改進,使 執行速度變的更快。在我看來自己出資料測試就相當於書中說的單...
軟體工程第二次作業
1.簡述軟體過程 軟體生存週期 軟體過程模型 軟體生存週期模型 三者之間的概念區別。軟體過程 軟體生存週期中的一系列相關過程所涉及的活動 軟體生存週期 軟體生命週期 同任何事物類似,軟體也有乙個從生到死的過程,這個過程一般稱為軟體生存週期或生命週期 軟體過程模型 軟體生存週期模型 為了能高效地開發乙...
軟體工程第二次作業
vs是乙個基本完整的開發工具集,它包括了整個軟體生命週期中所需要的大部分工具,本學期軟體工程我選擇virtual studio 2015作為開發工具。由於以前安裝過virtual studio 2015,這裡直接放上virtual studio 2015開發環境,如下圖所示。這裡通過對 求陣列的最值...