Module: كرر على جميع الأنماط الفرعية لقناع معين


Problem

5 /7


إريك ولوحة LED

Theory Click to read/hide

يحدث أنه من الضروري تعداد كل متواليات البت ذات طول معين. أو بعبارة أخرى ، كرر كل الخيارات الممكنة ، حيث يتم تحديد حالة من حالتين ممكنتين لكل كائن.

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

الكود العام باستخدام bitmasks موضح أدناه: إنتن. // عدد الكائنات o (طول تسلسل البت) لـ (int mask = 0؛ mask & lt؛ (1 & lt؛ & lt؛ n)؛ mask ++) {// حلقة عبر جميع الأرقام من 0 إلى 2 ^ n - 1 ، حيث يتوافق كل رقم مع قناع بت // قناع الرقم الحالي هو قناع بت ، حيث تحدد البتة i حالة الكائن من الدرجة الأولى لـ (int i = 0؛ i & lt؛ n؛ i ++) {// كرر عبر n بت لفهم الحالة التي يمتلكها كل كائن if ((1 & lt؛ & lt؛ i) & amp؛ mask) {// تحقق مما إذا كانت البتة i تساوي واحدًا // معالجة الخيار الذي يكون للكائن i-th الحالة & # 39 ؛ 1 & # 39 ؛ } else {// الحالة عندما تكون البتة i صفرية // معالجة الخيار الذي هو الكائن الأول من الحالة & # 39 ؛ 0 & # 39 ؛ } } }
يتم تشغيل هذا الرمز في O (2 ^ n * f (n)) ، حيث f (n) هو الوقت الذي تستغرقه في معالجة ملف قابل للتكرار.

Problem

وجد إريك لوحة LED في مرآب جده القديم. ومع ذلك ، فقد تفاجأ بأنه عند تفعيلها ، لم تكن الثنائيات متزامنة مع بعضها البعض. أي أن بعضهم احترق ، وبعضهم لم يحترق.
تبين أن اللوحة نفسها غير عادية. إنها شبكة مستطيلة بها عدد n من الصفوف وأعمدة m ، حيث تحتوي كل خلية على صمام ثنائي واحد. يوجد بالقرب من كل صف رافعة تقوم بتبديل جميع الثنائيات في هذا الصف (تنطلق الثنائيات المشتعلة والعكس صحيح). كل عمود له نفس الرافعات (التي أستخدمها في الثنائيات في العمود المقابل).
تساءل إريك عما إذا كان من الممكن تبديل الثنائيات إلى نفس الحالة عن طريق تبديل الرافعات.

الإدخال:
يحتوي السطر الأول على رقمين طبيعيين n و m (1 & lt ؛ = n ، m & lt ؛ = 7) - عدد الصفوف والأعمدة على اللوحة ، على التوالي.
ثم هناك n سطور بها أرقام m لكل منها - حالات الثنائيات ، حيث يعني 0 أن الصمام الثنائي متوقف ، و 1 أنه قيد التشغيل.

الإخراج:
اطبع "نعم" إذا كان من الممكن إحضار الثنائيات في حالة واحدة و "لا" إذا كان ذلك مستحيلًا.

أمثلة:
نبسب ؛ <الجسم>
إدخال الإخراج
2 2
0 1
10
نعم
2 2
0 1
0 0
لا

الشرح:
في المثال الأول ، يمكنك تبديل جميع الثنائيات في الصف الأول ، ثم تبديل جميع الثنائيات في العمود الأول. ثم سيتم إيقاف تشغيل جميع الثنائيات.
نبسب ؛