طريقة الجمع بين المربعات المبلطة المحددة كنقاط في المتجهات
المحلول
أول شيء يمكنني التفكير فيه هو (ربما ليس الطريقة الأكثر كفاءة):
1) احصل على المربع المحيط بكامل البلاط - وهو min (x) ، min (y) إلى الحد الأقصى (x) ، الحد الأقصى (y) لجميع x و y من البلاط الخاص بك
2) في كل صف ، ابدأ بحالة == فارغة ، وتكرار فوق كل عمود: تتغير الحالة إلى كاملة عندما تضغط على مربع ، وتفريغ عند العثور على ثقب. في كل مرة تنتقل فيها الولاية من فارغة إلى كاملة ، احفظ جزء خط اليد اليسرى من هذا المربع ، وفي كل مرة تنتقل فيها الحالة من كامل إلى فارغ ، احفظ جزء خط اليد الأيمن من هذا المربع.
3) كرر أعلاه في المحور y
الآن لديك مجموعة تحتوي فقط على شرائح الخط الخارجي ، يمكنك الجمع بين تلك التي هي خطي مشترك وما إلى ذلك والحصول على الشكل العام.
سيعمل هذا للأشكال غير المحببة وأيضًا إذا كان لديك ثقوب في بلاطك.
لا تنتمي إلى StackOverflow