سؤال

أنا خلقت باستخدام برنامج dev-cpp و wxwidgets الذي يحل اللغز.
يجب على المستخدم ملء عمليات كتل نتائج كتل ، و البرنامج سوف يحل.
Im حلها باستخدام bruteforce لقد تولد عدم تكرار 9 طول عدد مجموعات باستخدام خوارزمية العودية.يفعل ذلك بسرعة.
حتى هنا كل شيء عظيم!
ولكن المشكلة هي عندما يعمل البرنامج اعتمادا الحرف على كتل.لها بطيئة للغاية (أنه لم يحصل الجواب) لأن من حرف هذه المقارنة ضد +, -,*,.... الخIm حالة.
هل هناك طريقة أو لغة البرمجة اللي تبونه يسمح dinamic إنشاء المشغلين ؟ لذا يمكن تعريف المشغل ROW1COL2 أن تكون a + و بنفس الطريقة على جميع العمليات الأخرى.
أترك لقطة من التطبيق ، لذلك من الأسهل أن نفهم كيف اللغز يعمل.
http://www.imageshare.web.id/images/9gg5cev8vyokp8rhlot9.png


PD:الخوارزمية يعمل, حاول ذلك مع تافهة اللغز و حلها في الثانية.

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

المحلول

لست متأكدا من أن هذا هو حقا ما تبحث عنه ولكن..
أي وجوه المنحى لغة مثل C++ أو C# سوف تسمح لك لإنشاء "المشغل" قاعدة الطبقة ثم أن تستمد من هذه القاعدة فئة "PlusOperator" أو "MinusOperator" الخ'.هذا هو المعيار طريقة لتجنب مثل هذه الحالة البيانات.

ومع ذلك أنا متأكد من أن هذا سوف يحل المشكلة الأداء.
استخدام عادي القوة الغاشمة على مثل هذه المشكلة سوف يؤدي كنت في أسي الحل.هذا سوف يبدو إلى العمل بسرعة من أجل صغيرة المدخلات أقول الانتهاء من جميع الأرقام.ولكن إذا كنت ترغب في إكمال العمليات المشكلة الكبيرة مع الكثير من الاحتمالات.
لذلك من المرجح أنه حتى من دون قضية البرنامج الخاص بك لن تكون قادرة على حلها.

الطريق الصحيح في محاولة حل هذا النوع من المشاكل هو استخدام بعض طرق البحث المتقدمة التي تستخدم بعض مجريات الأمور المهمة.ترى A* (مجموعة نجوم) خوارزمية على سبيل المثال.

حظا سعيدا!

نصائح أخرى

هل يمكن أن تمثل الأرقام للمشغلين الكائنات ، وبالتالي فإن تحليل يتم مرة واحدة فقط في بداية حل.

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