سؤال

وأنا تنفيذ BFS، وما يجري القيام به هو الذهاب من خلال شجرة أمر العثور على أقصر حل للغز.

ما سأقوم به هو خلق كائن لقطة الذي يحمل الموقف الحالي للكل قطعة في اللغز. وأود أن أضيف هذا الكائن لقطة في قائمة الانتظار ومعرفة ما اذا كان هو الحل. ومع ذلك، أنا خلق هذه اللقطات على الطاير. حتى لا يكون هناك نوع من الطريقة التي سوف تولد أسماء الكائنات لقطة تلقائيا عندما وضعوا في قائمة الانتظار؟

وأو هل يجب أن تتبع كم عدد الإعلانات التي اجريتها والصلب فقط كود عليه بالقول ...

لقطة snapshot2. لقطة snapshot3. لقطة snapshot4. الخ ..

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

المحلول

وهناك طريقة - استخدام رمز قبل المعالج ل -Pasting مشغل . هذا يسمح لك لإنشاء اسم على أساس متغير، لذلك كنت التحديد:

#define S(variable) snapshot#variable

ووتريد ان تكون قادرة على خلق المتغيرات اسمه snapshot1، snapshot2 الخ:

Snapshot S(1)
Snapshot S(2)

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

نصائح أخرى

وأعتقد أن كنت طالبا كيف يمكنك إنشاء والحفاظ على الكثير من الأشياء عندما كنت لا أعرف كم سيكون هناك.

وتحتاج إلى إنشاء مجموعة من الكائنات. ثم يمكنك الوصول إليها كما لقطة [1]، لقطة [2] ... لقطة [أنا].

هل يمكن استخدام طابور من مكتبة قالب القياسية، ثم إنشاء دالة بإنشاء كائن لقطة ويضع في في قائمة الانتظار. تعطي هذه الوظيفة متغير ثابت الذي يحصل تتزايد كل مرة يتم استدعاء ومكتوب في حقل معرف اللقطة.

http://www.csci.csusb.edu/dick/samples /stl.html

http://www.cppreference.com/wiki/stl/queue/start

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

وعذرا، والشيء طابور كله يسبب الارتباك كيندا uneeded.

ودعونا نأخذ مثالا آخر. لذا لهذا اللغز، ويتم تحديد عدد القطع في اللغز من قبل المستخدم. في الطريق وانا تصميم البرنامج هي أن كل قطعة من اللغز هو انها كائن الخاصة.

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

for (int i-0; i < constraint; i++)
Piece "Piece"+i = new Piece();

ولا يمكنك إنشاء حيوي أسماء المتغيرات في C ++، على الأقل لا يخلو من بعض (وهمية؟) الإضافة.

وتحرير: بوصفها جانبا، وفعلت واجب أن أفترض يشبه لك في فئة AI، حيث غطينا الأساسيات مثل BFS، DFS، وA *. لا كان في السابق من الضروري أن يكون الكائنات المسماة بشكل فريد ل"لقطات"، وكنت قوائم الانتظار.

وedit2: وإذا كنت بحاجة إلى تتبع كم لقطات لديك، إنشاء متغير العدد الذي زيادات في كل مرة تقوم بإنشاء كائن

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