1.請從語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、>條件組合覆蓋五個覆蓋標準中(條件組合覆蓋難度較大,鼓勵嘗試,但請謹慎選擇),任選乙個標準設計測試用例還記得當初想先遍歷一遍找的陣列中最大的乙個正數,然後向前向後搜尋,又想到左右全為負數的並且還有一段連續略小於最大的整數的子段的話,還是不行.....2. 請利用自動測試工具對程式進行測試
3. 請將程式執行結果和自動測試分析結果截圖附到部落格中
設從第二個元素的就為最大子段,然後動態延伸或者選擇新的子段,返回最大子段和。
從第二個數遍歷陣列,並將每一次移動後產生的的子段和記下,並判斷上一次記下的子段和是否是否為正數,如果是,則將現有子段加入上一子段中,否則,放棄上一欄位,從當前子段重新動態規劃。
graph td
a[開始]-->b[i=0]
b-->l[i++]
cl-->c
c-->|是|d[b的i項=b的i-1項+a的第i項]
c-->|否|e[b的第i項=a的第i項]
d-->f
e-->f
f[b的第i項是否大於max]
f-->|是|g[max=b的第i項]
f-->|否|h
g-->|否|h
h-->|是|i[返回max]
h-->|否|l
這種演算法確實簡單高效,但畢竟是別人的,為我們所有的時候還是先來測試測試吧,實踐是檢驗真理的唯一標準嘛。
則條件組合在i取值於[1,5]時有如下情況:
b[i]>max
b[i]<=max
b[i-1]>0
b[i]>max,b[i-1]>0
b[i-1]>0,b[i]<=max
b[i-1]<=0
b[i-1]<=0,b[i]>max
b[i-1]<=0,b[i]<=max
即共在i迴圈5此情況下
(2 \times 2)^5=32768
種條件組合,由於組合次數過大不予考慮。
條件組合只有2x2x2=8種,上面是我以前的想法,是條件組合的組合,想太麻煩了。今天和辛娟娟同學討論了一下條件組合覆蓋,發現可以嘗試一條測試案例可以盡可能的包括多個條件組合,接下來是討論結果。
判定一:a.b[i-1]>0 b.b[i-1]<=0
判定二:c.b[i]>=max d.b[i]=6
案例1:a[6]=
0i=1
i=2i=3
i=4i=5
i=6a[i]11
1-4010
12b[i]12
3-1-19
21max02
3333
12條件組合
aceade
adebde
bceacf
案例2:a[6]=
0i=1
i=2i=3
i=4i=5
i=6a[i]11
1-4010
2b[i]12
3-1-19
21max02
3333
12條件組合
aceade
adebde
bceadf
案例3:a[6]=
0i=1
i=2i=3
i=4i=5
i=6b[i]12
3-1-19
21max02
3333
12條件組合
aceade
adebde
bdebcf
案例4:a[6]=
0i=1
i=2i=3
i=4i=5
i=6b[i]12
3-1-19
3max02
3333
12條件組合
aceade
adebde
bdebdf
即四條測試案例即可覆蓋八種條件組合
接下來考慮條件判定覆蓋,由於判定條件中僅一條條件,所以條件/判定覆蓋等價於判定覆蓋或條件覆蓋。(emmm,但這樣就有分值差了啊!!!我也想實現條件判定覆蓋啊!!可動態規劃演算法就是這樣子的單條件啊~~~~)
設定測試案例為:
最大子段和(三)
最大子段和問題 解法三 演算法分析 對於序列a,設j代表當前序列的終點,i代表當前序列的起點 分析 如果a i 是負的,那麼它不可能是最大子段的起點,因為任何包含a i 為起點的子段都可以通過 用a i 1 為起點而得到改進。類似的,任何負的子段都不可能是最優子段的字首 原理相同 如果在迴圈中檢測到...
(三)最大子段和問題
1.概念 求陣列的和最大的非空連續子陣列,這樣的連續的子陣列稱為最大子陣列 maximum subarray 2.常規方法 o 3 最大子段和問題 o 3 include using namespace std 列印陣列 void printarray int arr,int strat,int l...
最大子段和 三種方法
今天參加了一場洛谷網的比賽,深受打擊.寒假過了這麼多天,一直沒有認真學習演算法,以至於現在的水平比兩個月前還要低.本來就沒有多少底子,又退步了許多,感慨萬分.在洛谷上看到這麼一道題 最大子段和 如果資料小的話,用暴力列舉很簡單就可以做出來了,時間按複雜度位o n 3 可是一道演算法題怎麼會這麼簡單呢...