السلام عليكم أيها الأخوة، وطيب الله أوقاتكم
لدي مشكلة في برمجة التالي بالسي::

افرض أن لدي خمسة أجهزة (من 0 -4) كل واحد منها يستطيع التواصل لاسلكيا في نطاق محدود يمثله الدائرة الكبيرة الحاوية للدوائر الصغيرة(اﻷجهزة)، ألاحظ من الشكل أن الجهاز رقم 0 يستطيع الوصول للجهاز رقم 2 بقفزة واحدة فقط، كذلك الجهاز رقم 2 يستطيع الوصول للجهاز رقم 3 بقفزة واحدة فقط، بينما الجهاز رقم 1 ورقم 4 لا يستطيعان الاتصال بأي جهاز، قمت بكتابة كود بلغة السي، يكون مصفوفة ثنائية البعد، فكانت على هذا الشكل:

اﻷرقام تمثل عدد القفزات المطلوبة للوصول للجهاز اﻵخر، والرقم -1 يشير لقفزة الجهاز إلى نفسه (غير عملي لذلك جعلته بقيمة سالبة).
المشكلة::
ألاحظ من الرسم (ويمكن استنتاج ذلك من المصفوفة اﻷولى) أن الجهاز (n0) يستطيع الوصول للجهاز (n3) ولكن بقفزتين، لهذا يجب أن تكون المصفوفة بهذا الشكل::

فكيف أستطيع كتابة كود يقرأ المصفوفة القديمة ويكتشف عدد القفزات اﻷكثر من قفزة واحدة (قد تكون قفزتين أو أكثر)، ويغير في المصفوفة.
بمعنى آخر الكود الذي كتبته يستطيع فقط مليء المصفوفة بعدد قفزة واحدة وإلا بعدم إمكانية القفز (الوصول) --> مع أن اﻷمكانية واردة بأكثر من قفزة، ويمكن استنتاج ذلك من المصفوفة اﻷولى! ولكن كيف!!
ملاحظة أرجو أن يكون الكود عاما، ﻷن مواقع الأجهزة تختلف دوريا أي أن المصفوفة ومواقع اﻷجهزة هنا كان للمثال فقط، فقد تتحرك اﻷجهزة. (اﻷجهزة تعبر عن شبكة AD Hoc).

