تصف هذه المقالة تنفيذ Java لخوارزمية القيمة القصوى لإيجاد مجموع المباراة الفرعية. شاركه للرجوع إليه ، على النحو التالي:
بشكل عام ، يتم استخدام C و C ++ بشكل متكرر في تنفيذ الخوارزمية. أدناه نقوم بتنفيذ الخوارزميات من خلال لغة جافا ، مما يجعلنا نشعر بمزيد من الحميمية.
عنوان:
أدخل صفيف تشكيل ، مع أرقام إيجابية وسلبية في الصفيف.
واحد أو أكثر من أعداد صحيحة متتالية في صفيف تشكل سالجًا فرعيًا ، كل مسافر فرعي له مبلغ.
ابحث عن القيمة القصوى لمجموع جميع الطوائف الفرعية.
على سبيل المثال ، صفيف الإدخال هو 1 ، -2 ، 3 ، 10 ، -4 ، 7 ، 2 ، -5 ، وأكبر سفر تحت 3 ، 10 ، -4 ، 7 ، 2 ،
لذلك فإن الناتج هو مجموع 18 من المستعار الفرعي.
رمز التنفيذ:
Package arrdemo ؛ public class maxsub {public static void main (string [] args) {// todo method method method method method findMaxSubarySum1 () ؛ } public static void findMaxSubarySum1 () {// sum هو مجموع subarray int sum = 0 ؛ // Max هو الحد الأقصى للمجموع من السائق الفرعي int max = 0 ؛ // start position من الحد الأقصى للسمار الفرعي int startPos = 0 ؛ // end position من الحد الأقصى للسمار الفرعي int endpos = 0 ؛ int [] Array = {-1 ، 2 ، -3 ، 12 ، -5 ، -1 ، 9 ، -2} ؛ لـ (int i = 0 ؛ i <array.length ؛ i ++) {sum+= Array [i] ؛ // sum if (sum <0) {// إذا تم العثور على المبلغ الحالي ليكون سلبيًا ، ويبدأ وضع البداية من مجموع الموضع التالي = 0 ؛ StartPos = i + 1 ؛ } if (sum> max) {// إذا تم العثور على المبلغ أكثر من الحد الأقصى السابق ، تعيين مجموع إلى الحد الأقصى ، وتسجيل الموضع الأخير max = sum ؛ endpos = i + 1 ؛ }} system.out.println ("wulin.com نتيجة اختبار:") ؛ System.out.println ("Max:" + Max) ؛ System.out.println ("StartPos:" + StartPos + "، EndPos:" + (EndPos - 1)) ؛ }}نتائج التشغيل:
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.