PDA

View Full Version : مساحت مستطیل های روی هم



goldax
یک شنبه 21 آبان 1391, 17:25 عصر
با سلام خدمت دوستان عزیز
آیا کسی با الگوریتمی آشنایی داره که مختصات فرضی 2 یا 3 مستطیل رو بگیره (مختصات شامل 2 گوشه مستطیل که هر گوشه از 2 نقطه شکل گرفته مثلا نقطه a به طول 2 و عرض 5 و b به ...) و تعیین کنه مساحت مستطیل مشترکی که از قرار گرفتن این مستطیل ها روی هم تشکیل میشه چقدره.مثل شکل زیر:
94771
نقاط قرمز مستطیل مشترکی هست که به وجود اومده.
ممنون میشم راهنمایی بفرمایید.

hoseinnn
دوشنبه 22 آبان 1391, 19:07 عصر
سلام
ببین این روش جواب میده
فرض میکنیم صفحه مختصات ما بین 0 تا 500 باشه،2 تا آرایه برای ذخیره نقاط مشترک تعریف میکنیم(با طول500) با مقدار اولیه 1
مثلا اگه نقطه ای با عرض 50 مشترک باشه عنصر 50 ام مقدار 1 در غیر این صورت مقدار 0 میگیره
آرایه ex برای xها و آرایه ey برای y ها
به این صورت :
for (j=0; j<500; j++) {
ex[j] = 1;
ey[j] = 1;
}

برای هر مستطیل مختصات 2 نقطه گوشه چپ بالا و راست پایین رو داریم :
مثلا برای 3 تا مستطیل :

for (t=0; t<3; t++) {
//*************** دریافت ورودی از کاربر
//*************** read x1,y1,x2,y2
//************************* گرفتن اشتراک :
for (j=0; j<500; j++) {
if ((j<x1) || (j>=x2)) {
ex[j] = 0;
}
if ((j<y1) || (j>=y2)) {
ey[j] = 0;
}
}
}

که طول مستطیل مشترک میشه تعداد 1 ها در آرایه ex وعرض مستطیل مشترک میشه تعداد 1 ها در آرایه ey

//**************************محاسبه تعداد 1 ها :
number_x = 0;
number_y = 0;
for (j=0; j<500; j++) {
if (ex[j] == 1) {
number_x++;
}
if (ey[j] == 1) {
number_y++;
}
}
//*********************** مساحت مستطیل مشترک :
m = number_x*number_y;