最大連續子數組和與JUnit測試

【題目】最大連續子數組和(最大子段和)


  • 背景

    問題: 給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為:Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
    例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和為20。
    -- 引用自《百度百科》

    • 具體要求

    (1)要求寫出可運行的完整代碼提交至GitHub或者Coding.net系統中,并將代碼地址附到博客內。
    (2) 請從語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋五個覆蓋標準中,任選一個標準設計測試用例。
    (3) 請利用自動測試工具對程序進行測試。
    (4) 請將程序運行結果和自動測試分析結果截圖附到博客中。

    • 算法與代碼實現

      拋棄的算法:通過題目要求,首先想到的是暴力求解,即利用循環,求出每一個子數組的值并進行比較,求出其中子數組的最大值。但是由于此方法效率較低,于是思考下一個方法。

      新的算法:我們首先分析出,當子數組和最大時,該子數組的首位和末位(存在的情況下),一定應為正值,且該子數組一定需要大于零才可作為新的最大的子數組并繼續向下運算;否則,我們將拋棄他,并以下一位作為新的運算子數組。我們設每次運算的子數組為ThisSum,新的臨時最大的子數組為MaxSum,根據此特性,可以列出公式:Array[i] = MAX(Array[i-1] + A[i] , A[i])

    根據上述公式,已將具體代碼提交到GitHub上,便不在此贅述,點此查看Github源代碼

    • 流程圖與測試

    根據寫出的代碼,畫出流程圖如下:
    1643171-20190418185619050-1716397905.png

    為了尋求合適而全面的測試樣例,我找出循環內部的兩條判斷語句的流程,選用判斷條件覆蓋。

    線段號ThisSum>MaxSumThisSum<0
    Blue1Yes
    Yellow2NoYes
    Red3NoNo

    選用的測試樣例數組如下:

    數組備注
    Array1:{ }取邊界值?測試
    Array2:{1,-2,3,4,-5}1->2->1->1->3
    Array3:{1,2,3,4,5}輔助測試
    Array4:{-1,-2,-3,-4,-5}全為負值 故最大為?

    根據以上選用的測試樣例,測試結果如下:
    Array1:1643171-20190418195430603-1370130668.png

    Array2:1643171-20190418195824638-1649854299.png

    Array3:1643171-20190418195502713-208031916.png

    Array4:1643171-20190418195531838-566755707.png

    自動單元測試JUnitTest結果如下:

    1643171-20190418194939167-323046570.png

    到此,對最大連續子數組求和的內容結束。

    posted @ 2019-04-18 19:27 cocoaman 閱讀(...) 評論(...) 編輯 收藏
    刷新評論刷新頁面返回頂部

轉載于:https://www.cnblogs.com/cocoaman/p/10729553.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279647.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

筆記本電源適配器為什么總壞_為什么某些交流適配器和電源會發出嘯叫聲?

筆記本電源適配器為什么總壞Most of the time our AC adapters and power supplies tend to be quiet, but what does it mean when one makes a whining noise? Should you be concerned? Today’s SuperUser Q&A post has the answers to a worried reader’s question…

4412 字符類設備的設備號

一、靜態申請字符類設備號 字符類設備函數在文件"include/linux/fs.h"中內核提供了三個函數來注冊一組字符設備編號&#xff0c;這三個函數分別是 register_chrdev_region()alloc_chrdev_region()register_chrdev()register_chrdev_region()是提前知道設備的主次設備…

monogdb操作system.*權限

mongodb roles system.roles集合刪不掉 當你自定義了特權(角色): db.createRole({role: "dropSystemViewsAnyDatabase",privileges: [{actions: [ "dropCollection" ],resource: { db: "", collection: "system.roles" }}],roles: []}…

如何發現假庫存照片(并將合適的人歸于屬性)

Spammers and other unscrupulous advertisers are always looking for new ways to get you click on their pages. One of the latest tactics is to steal popular and useful stock images—like the kind you sometimes see in news articles—and re-upload them elsewhe…

Mysql Hunter

一、簡介自動化實施的過程中&#xff0c;我們通常都面臨一個棘手的問題&#xff1a;數據的準備和恢復。即在成功執行一個自動化用例時&#xff0c;我們可能需要一定的數據前提&#xff0c;而為了使得整個前提不至于被其他的用例破壞&#xff0c;以至于我們有時不得不在自動化用…

C6748_UART(5) - UART寄存器

1、FIFO控制寄存器&#xff08;FCR&#xff09;RXFIFTL&#xff1a;接收FIFO中斷觸發(當FIFO中的數據量剛到達所要求&#xff08;trigger level&#xff09;的時候會產生中斷);DMAMODE1:如果FIFO使能的話此位可以使能DMA模式。TXCLR&#xff1a;發送FIFO清除。RXCLR&#xff1a…

如何在Windows 10上限制Wi??ndows Update的下載帶寬

Windows 10’s Fall Creators Update gives you more control of Windows Update’s downloads and uploads. You can now set a download bandwidth limit, ensuring Windows Update won’t hog your Internet connection with its background downloads. Windows 10的Fall Cr…

Elasticsearch嵌套查詢

2019獨角獸企業重金招聘Python工程師標準>>> 一、背景 最近在做基于宴會廳檔期的商戶搜索推薦時&#xff0c;如果用傳統平鋪式的mapping結構&#xff0c;無法滿足需求場景&#xff0c;于是用到了Elasticsearch支持的Nested(嵌套)查詢。 二、普通對象與嵌套對象的索引…

寫給深圳首期Python自動化開發周未班的信

你是否做了正確的決定&#xff1f; 深圳首期周未班的同學們大家好&#xff0c;我是Alex, 老男孩教育的聯合創始人&#xff0c;Python項目的發起人&#xff0c;51CTO學院連續2屆最受學員喜愛的講師&#xff0c;中國最早一批使用Python的程序員&#xff0c;當然還有一堆頭銜&…

網站跳出率的相關要點介紹

今天小峰seo博客和大家一起來探討關于“網站跳出率的相關要點”&#xff0c;這里大體是分為三大要點&#xff1a;首先是進入的流量渠道&#xff0c;然后就是綜合流量速度和內容的質量問題&#xff0c;細的來說就是我們的網站進來的用戶是搜索什么關鍵詞來的是通過百度還是搜狗或…

如何使用PowerShell提升開發效率(以Windows Embedded CE為例)

簡介 本文講述如何使用Powershell通過RAPI來控制Windows Embedded CE和Windows Mobile設備。 緣由 我入行的時候是做AS400 RPG和UNIX C開發的&#xff0c;所有開發環境都是字符界面&#xff0c;因此習慣了vigrepmake的開發模式。后來開始做Windows的開發&#xff0c;開始也不大…

視頻圖像傳輸學習筆記-基礎小知識(一)

攝像頭DVP與MIPI區別 DVP是并口&#xff0c;需要PCLK、VSYNC、HSYNC、D[0&#xff1a;11]——可以是8/10/12bit數據&#xff0c;看ISP或baseband是否支持&#xff1b;總線PCLK極限大約在96M左右&#xff0c;而且走線長度不能過長&#xff0c;所有DVP最大速率最好控制在72M以…

java程序員面試交流項目經驗

粘貼自&#xff1a;https://blog.csdn.net/wangyuxuan_java/article/details/8778211 1&#xff1a;請你介紹一下你自己 這是面試官常問的問題。一般人回答這個問題過于平常&#xff0c;只說姓名、愛好、工作經驗&#xff0c;這些簡歷上都有。其實&#xff0c;面試官最希望知道…

Windows7旗艦版磁盤分區詳解—附分區步驟截圖

最近工作中配置使用聯想的Thinkpad TL系列本本.當然原裝的系統時剛發布的Windows RTM旗艦版.在考慮買之前也參考了戴爾 蘋果的等等, 但個人私下也是一直在用Tinkpad系列, 相比其他的品牌本人還是比較鐘情于Tinkpad 非常實用的鍵盤. 以及簡潔的外觀.買回來一看這個TL系列原裝的系…

outlook存檔郵件_如何在Outlook 2013中存檔電子郵件

outlook存檔郵件We’ve always been told that backing up our data is a good idea. Well, that same concept can extend to email as well. You may want to archive your email every so often, such as monthly, quarterly, or even yearly. 我們一直被告知備份數據是一個…

洛谷 P1736 創意吃魚法(多維DP)

題目描述 回到家中的貓貓把三桶魚全部轉移到了她那長方形大池子中&#xff0c;然后開始思考&#xff1a;到底要以何種方法吃魚呢&#xff08;貓貓就是這么可愛&#xff0c;吃魚也要想好吃法 ^_*&#xff09;。她發現&#xff0c;把大池子視為01矩陣&#xff08;0表示對應位置無…

計算機組裝和維護_如何構建自己的計算機,第二部分:組裝在一起

計算機組裝和維護So you’ve selected your parts, double- and triple-checked their compatibility, and waited for economy shipping to bring them all to your door. It’s time to get to the fun part: putting them all together. 因此&#xff0c;您已經選擇了零件&a…

Python學習-集合的常見用法

st [1,2,3,4,5] ct [2,3,4,5,76] list set(["name", list, try]) list2 set(["name", list, try, but, test]) # 兩個列表去重&#xff0c;利用集合st set(st) #設為集合 ct set(ct) print(st, type(st))sct0 st.union(ct) #并集 sct st | ct …

Autofac之自動裝配

從容器中的可用服務中選擇一個構造函數來創造對象&#xff0c;這個過程叫做自動裝配。這個過程是通過反射實現的 默認 思考這么一個問題,如果注冊類型中存在多個構造函數,那么Autofac會選擇哪一個來創建類型的實例 答案是"盡可能最多參數" class ConstructorClass {p…

對Emlog 6.0 Beta的完整代碼審計過程

Emlog 6.0 beta版本&#xff0c;這可能是最后一篇關于PHP語言CMS的代碼審計文章&#xff0c;此次將詳細記錄完整的審計過程。 文章基本上完整記錄小東的對此CMS審計過程&#xff0c;或許顯得繁瑣&#xff0c;但代碼審計的過程就是這樣&#xff0c;發現可能項&#xff0c;然后精…