سوال سخت برنامه نویسی ++C

سوال

هدف: پیدا کردن یک الگو در یک ماتریس دو بعدی

شرح پروژه:

در ابتدا چهارعدد q,p,n,m که به ترتیب ابعاد ماتریس دو بعدی و الگوهست به برنامه داده می شود.

الگو هم یک ماتریس دو بعدی اما کوچکتر است. همواره ۸۰<n,m<q,p هستند.

مقادیر این آرایه ها ۰ یا ۱ است که کاربر وارد می کند.

برنامه ای بنویسید که الگو را در ماتریس بزرگتر بیابد. نقاطی از ماتریس که الگو هستند را به همان صورت چاپ کند و بقسه نقاط را با مقدار ۲

جایگزین کند.

الگو اگر در ماتریس دوبعدی به صورت ۱۸۰,۹۰ با ۲۷۰ درجه نیز چرخیده باشد، باید پذیرفته شود.

تضمین می شود که اگر دو نمونه از الگو در ماتریس وجود داشته باشد، تداخلی بین این دو نمونه نباشد.

نمونه ورودی۱ :

۷ ۱۶ ۴ ۵

۱ ۱ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰

۱ ۰ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۰ ۱ ۰ ۱ ۰ ۱ ۰

۰ ۱ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۰ ۱

۰ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۱ ۰ ۰ ۰ ۰

۱ ۰ ۰ ۱ ۰ ۱ ۱ ۰ ۱ ۰ ۰ ۰ ۱ ۱ ۰ ۱

۰ ۱ ۱ ۰ ۱ ۰ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۰

۱ ۱ ۰ ۰ ۱ ۰ ۱ ۰ ۱ ۱ ۰ ۰ ۱ ۰ ۱ ۱

۱ ۱ ۰ ۰ ۰

۱ ۱ ۰ ۰ ۰

۱ ۱ ۰ ۰ ۰

۱ ۱ ۱ ۱ ۱

نمونه خروجی۱ :

۲ ۲ ۲ ۱ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۱ ۱ ۱ ۱ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

نمونه ورودی۲:

(در این نمونه الگو به صورت چرخش ۹۰ درجه در ماتریس وجود دارد.)

۷ ۱۶ ۴ ۵

۱ ۱ ۰ ۰ ۱ ۰ ۰ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰

۱ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۱ ۰ ۱ ۰ ۱ ۰

۰ ۱ ۰ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۰ ۱

۰ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰ ۰ ۰

۱ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۰ ۱ ۰ ۰ ۱ ۱ ۰ ۱

۰ ۱ ۱ ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۰

۱ ۱ ۰ ۱ ۰ ۰ ۰ ۰ ۱ ۱ ۰ ۰ ۱ ۰ ۱ ۱

۱ ۱ ۰ ۰ ۰

۱ ۱ ۰ ۰ ۰

۱ ۱ ۰ ۰ ۰

۱ ۱ ۱ ۱ ۱

نمونه خروجی۲:

۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۱ ۱ ۱ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۱ ۱ ۱ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

۲ ۲ ۲ ۱ ۰ ۰ ۰ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲ ۲

0
yasinzarei 1 سال 0 پاسخ ها 105 دیده شده 0

ارسال یک پاسخ