บทความนี้อธิบายการใช้งาน Java ของอัลกอริทึมค่าสูงสุดสำหรับการค้นหาผลรวมของอาร์เรย์ย่อย แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
โดยทั่วไปจะใช้ C และ C ++ บ่อยขึ้นในการใช้อัลกอริทึม ด้านล่างเราใช้อัลกอริทึมผ่านภาษา Java ซึ่งทำให้เรารู้สึกสนิทสนมมากขึ้น
หัวข้อ:
ป้อนอาร์เรย์รูปร่างที่มีจำนวนบวกและลบในอาร์เรย์
จำนวนเต็มติดต่อกันอย่างน้อยหนึ่งครั้งในอาร์เรย์ในรูปแบบ subarray แต่ละ subarray มีผลรวม
ค้นหาค่าสูงสุดของผลรวมของ subarrays ทั้งหมด
ตัวอย่างเช่นอาร์เรย์อินพุตคือ 1, -2, 3, 10, -4, 7, 2, -5 และ subarray ที่ใหญ่ที่สุดคือ 3, 10, -4, 7, 2,
ดังนั้นผลลัพธ์คือผลรวม 18 ของ subarray
รหัสการใช้งาน:
แพ็คเกจ arrdemo; คลาสสาธารณะ maxsub {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการสร้างอัตโนมัติที่สร้างขึ้น stub findmaxsubarysum1 (); } โมฆะคงที่สาธารณะ findMaxSubarySum1 () {// ผลรวมคือผลรวมของ subarray int sum = 0; // สูงสุดคือผลรวมสูงสุดของ subarray int max = 0; // เริ่มต้นตำแหน่งของ subarray สูงสุด int startPos = 0; // ตำแหน่งสิ้นสุดของ subarray สูงสุด int endpos = 0; int [] array = {-1, 2, -3, 12, -5, -1, 9, -2}; สำหรับ (int i = 0; i <array.length; i ++) {sum+= array [i]; // sum ถ้า (sum <0) {// ถ้าผลรวมปัจจุบันพบว่าเป็นลบให้ล้างและตำแหน่งเริ่มต้นเริ่มต้นจากตำแหน่งถัดไป = 0; startPos = i + 1; } if (sum> max) {// หากพบว่าผลรวมมากกว่าค่าสูงสุดก่อนหน้านี้กำหนดผลรวมให้สูงสุดและบันทึกตำแหน่งสุดท้ายสูงสุด = ผลรวม; endpos = i + 1; }} system.out.println ("ผลการทดสอบ wulin.com:"); System.out.println ("สูงสุด:" + สูงสุด); System.out.println ("startpos:" + startpos + ", endpos:" + (endpos - 1)); -ผลการทำงาน:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน