قد يتم استخلاص مشاكل الحياة الواقعية في نموذج البيانات هذا:
اختر عدة أرقام من صفيف واترك مجموع هذه الأرقام هو القيمة المحددة.
كان ينبغي على معظم القراء تجربة تسوق عبر الإنترنت. التسوق عبر الإنترنت عمومًا لديه وظيفة صنع الطلبات. إذا قام القارئ بشراء منتج بقيمة 70 يوانًا ، ولكن يجب أن يكون أكثر من 100 يوان لشحن الشحن المجاني ، سيوصي النظام تلقائيًا ببعض المنتجات ، والتي ستضيف ما يصل إلى 100 يوان.
كيف يحدد النظام المنتجات التي توصي بها؟ هذا هو في الواقع النموذج المذكور الآن. يمكننا وضع أسعار المنتجات البيع الساخنة في صفيف ، ثم استخدام الخوارزمية لمعرفة مبالغ الأسعار في الصفيف 30 يوان.
أقل هراء ، سوف يشاركك Xiaocai نسخة JavaScript من تطبيق الخوارزمية.
رمز الخوارزمية:
وظيفة getCombbysum (صفيف ، مجموع ، التسامح ، الهدف) {var util = {/*الحصول على تركيبة من arrayarr: الهدف arraynum: completed educturn: صفيف واحد يحتوي على صفائف تركيبة*/getcombination: function (arr ، num) {var r = [] i = 0 ، l = A.Length ؛ i <= ln ؛ 0 ؛ i <array.length ؛ i ++) {r.push (i) ؛} return r ؛}} ، logic = {// فرز الصفيف ، ثم احصل على ما نحتاجه: function (Array ، sum) {// clone arrayvar _array = array.concat () ، r = [] ، i = 0 ؛ b ؛}) ؛ // احصل على كل الأرقام عندما يكون أقل من أو متساوٍ sumfor (i = 0 ؛ i <_array.length ؛ i ++) {if (_array [i] <= sum) {r.push (_array [i]) ؛ 0 ، combarray = [] ، _ sum = 0 ، _cca = [] ، _ cache = [] ؛ if (count == _returnmark) {return ؛} // احصل على عدد combinCombarray = util.getCombination (arrayIndex ، count) ؛ for (i = 0 ؛ i <combarray.length ؛ i ++) {_ cca = i cca = 0 ؛ _cache = [] ؛ // احسب المبلغ من comboyfor (k = 0 ؛ k <_cca.length ؛ k ++) {_ sum+= Array [_cca [k]] ؛ _ cache.push (Array [_cca [k]] _tolerance) {r.push (_cache) ؛}} logic.core (Array ، sum ، ArrayIndex ، count-1 ، r) ؛}} ، r = [] ، _ array = [] ، _ targetCount = 0 ، _tolerance = 0 ، _returnmark = 0 ؛ // check check. _targetCount ؛ _tolerance = التسامح || _tolerance ؛ _array = logic.init (Array ، sum) ؛ if (_targetCount) {_ returnmark = _targetCount-1 ؛} logic.core (_array ، sum ، util.getArrayIndex (_array) ، (_ TargetCountتعليمات الاتصال:
صفيف: صفيف مصدر البيانات. مطلوب.
المبلغ: مجموع المبلغ. مطلوب.
التسامح: التسامح. إذا لم يتم تحديد هذه المعلمة ، فيجب أن يكون مجموع المبلغ مساوياً لمعلمة SUM ، فإن تحديد هذه المعلمة سيؤدي إلى تطفو النتيجة في نطاق التسامح. خياري.
TargetCount: عدد المعاملات. إذا لم يتم تحديد هذه المعلمة ، فإن النتيجة تحتوي على جميع الحالات الممكنة. يمكن تحديد هذه المعلمة تصفية عدد ثابت من الأرقام وإضافتها. إذا تم تحديدها على أنها 3 ، فإن النتيجة تحتوي على ثلاثة أرقام فقط. خياري.
قيمة الإرجاع: هيكل الصفيف الذي تم إرجاعه عبارة عن صفيف ، والعناصر الموجودة في الصفيف الداخلي هي معاملات ، والعناصر الموجودة في الصفيف الخارجي كلها نتائج ممكنة.