سؤال

النظر في السيناريو لدي قيم مخصصة مثل هذه

Amazon -1

وول مارت -2

الهدف -4

Costco -8

BJS -16

في DB ، يتم تخزين البيانات عن طريق إخفاء هذه القيم بناءً على توفرها لكل منتج. على سبيل المثال ،

وصف قناع المنتج

جهاز كمبيوتر محمول متوفر في Amazon

17 iPhone متاح في Amazon و BJ

24 مرتبة متوفرة في Costco و BJ's

مثل هذه جميع المنتجات مقنعة وتخزينها في DB.

كيف يمكنني استرداد جميع تجار التجزئة بناءً على القيمة المقنعة. ، على سبيل المثال ، للمراتب ، القيمة المقنعة هي 24. ثم كيف يمكنني العثور على Costco & BJ برمجيًا. أي خوارزمية/منطق سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

int mattress = 24;
int mask = 1;
for(int i = 0; i < num_stores; ++i) {
    if(mask & mattress != 0) {
        System.out.println("Store "+i+" has mattresses!");
    }
    mask = mask << 1;
}

ال if تصطف البيان على البتات ، إذا كانت قيمة المرتبة لها نفس مجموعة القناع ، فإن المتجر الذي يبيع قناعه المراتب. لن تكون قيمة المرتبة وقيمة القناع غير صفرية إلا عندما يبيع المتجر المراتب. لكل تكرار نقوم بنقل القناع بوضع واحد إلى اليسار.

لاحظ أن قيم القناع يجب أن تكون إيجابية ، وليست سلبية ، إذا لزم الأمر ، يمكنك أن تتضاعف بمقدار سلبي.

نصائح أخرى

على افتراض أنك تعني في قاعدة بيانات SQL ، ثم في استرجاعك SQL ، يمكنك بشكل عام إضافة على سبيل المثال (MyField و 16) = 16 ، حيث (MyField و 24) = 24 إلخ.

ومع ذلك ، لاحظ أنه إذا كنت تحاول تحسين مثل هذه الاستردادات ، وعادة ما يكون عدد الصفوف المطابقة للاستعلام أصغر بكثير من إجمالي عدد الصفوف ، فمن المحتمل ألا تكون هذه طريقة جيدة لتمثيل هذه البيانات. في هذه الحالة ، سيكون من الأفضل أن يكون لديك جدول "Productore" منفصل يحتوي على أزواج (منتجين ومتجر) تمثل هذه المعلومات (وفهرستها على storeid).

هل يوجد في معظم تجار التجزئة الذين يلخص مخزونهم القيمة "المقنعة" في كل حالة؟ إذا كان الأمر كذلك ، فلا يزال يتعين عليك التحقق من جميع الأزواج لاستردادها ، والتي ستستغرق وقتًا في N². فقط استخدم حلقة متداخلة.

إذا كانت القيمة تمثل مجموع أي عدد من مخزونات تجار التجزئة ، فأنت تحاول حل مجموعة فرعية مشكلة ، لذلك للأسف لا يمكنك القيام بذلك في وقت أفضل من 2^n.

إذا كنت قادرًا على زيادة بنية البيانات الأصلية الخاصة بك بمعلومات للبحث عن تجار التجزئة الذين يساهمون في المبلغ ، فسيكون ذلك مثاليًا. ولكن نظرًا لأنك تطرح السؤال ، فأفترض أنه لا يمكنك الوصول إلى بنية البيانات أثناء بناؤه ، لذا لإنشاء جميع مجموعات التجزئة من تجار التجزئة للتأكد من أنك تريد النظر فيها خوارزمية Knuth PDF] لتوليد جميع المشابك K (وتشغيله لمدة 1 ... ك) توكب المجلد 4A ثانية 7.2.1.3.

http://www.antiifcampaign.com/

تذكر هذا. إذا كان بإمكانك إزالة "if" مع بنية أخرى (نمط خريطة/استراتيجية) ، فيمكنك تركها هناك ، وإلا فإن "if" خطير حقًا !! (F.Cirillo)

في هذه الحالة ، يمكنك استخدام خريطة الخريطة مع عملية Bitmask.

لوكا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top