我所選擇的題目為求最大連續子陣列和。寫部落格不是寫教程,所以我只給出了一些關鍵部分的截圖。
使用了kadane演算法,這個演算法的時間複雜度為o(n),對於解決這種問題十分有效。我使用c++進行了實現。
**如下
# include using namespace std;
class maxsub
;maxsub::maxsub()
//position is the length of the array.
maxsub::maxsub(int * p, int position)
maxsub::~maxsub()
int maxsub::max_sub()
return max;
}int maxsub::max(int fir, int sec)
通過git推送到遠端倉庫,倉庫位址為倉庫位址鏈結,在homework3資料夾下。
我準備使用判定/條件覆蓋標準,進行測試。
判定/條件覆蓋:是設計足夠的測試用例,得使判斷中每個條件的所有可能取值至少執行一次,同時每個判斷本身所有可能結果也至少執行一次。
首先分析演算法,演算法中重複使用了兩個數中取最大值這個方法,因此每一次迴圈,就是進行了兩次判斷。所以可以據此進行設計,我準備使用四組測試用例,這樣就可以達到判定/條件覆蓋的標準。
這四組資料,覆蓋了4條分支路徑,並且同時滿足了條件覆蓋的標準。
測試資料編號
要輸入的陣列
預期結果
1-5,10,20,-5302
10, 5 ,-5 ,5153
10, 5 , -5 ,10204
10,-15 ,6 ,10
16測試部分的**如下
#include "stdafx.h"
#include "cppunittest.h"
#include "../homework3/source.cpp"
using namespace microsoft::visualstudio::cppunittestframework;
namespace unittest1
; int ara2[4] = ;
int ara3[4] = ;
int ara4[4] = ;
maxsub mymaxsub1(ara1, 4);
maxsub mymaxsub2(ara2, 4);
maxsub mymaxsub3(ara3, 4);
maxsub mymaxsub4(ara4, 4);
assert::areequal(mymaxsub1.max_sub(), 30);
assert::areequal(mymaxsub2.max_sub(), 16);
assert::areequal(mymaxsub3.max_sub(), 20);
assert::areequal(mymaxsub4.max_sub(), 15);
} };
}
測試結果如下
軟體工程第三次作業
影印機的工作過程大致如下 未接到影印命令時處於 閒置 狀態,一旦接到 影印命令 則進入 影印 狀態,完成乙個影印命令 規定的工作後又回到閒置狀態,等待下乙個影印命令 如果執行影印命令時 發現沒紙 則進入 缺紙 狀態,發出警告,等待裝紙,裝滿紙 後進入閒置狀態,準備接收影印命令 如果影印時發生 卡紙故...
軟體工程第三次作業
最大連續子陣列和 最大子段和 問題 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為 max,1 i j n 例如,當 a 1 a 2 a 3 a 4 a 5 a...
軟體工程第三次作業
這個作業屬於哪個課程 這個作業要求在 這個作業的目標 1 對比原型設計工具 2 需求分析 3 原型設計 因為之前對原型設計一點了解都沒有,所以我選擇通過對這三款軟體的第一印象以及後面的深入了解的方式來對比這三款原型設計工具的不同之處 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img...