已知一個矩形的四個頂點,周圍有很多點,知道ID 坐標,要求覆寫(覆寫是指包括這個點的外接矩形)額外一點而使面積增加的最少 寫了一部分 寫不動了 求指導 求改正
int find_min_cover(int order,int kx,int ky){
int temp=0;
double add_area=0;
double add_area_temp=0;
int ko=ky+1;
bool flag_10=true;
while(user_flag[order][user_y[order][ko].id]&&ko<USER_N-1) ko++;
if(!user_flag[order][user_y[order][ko].id]){
temp=ko;
if(user_y[order][ko].x<x_min[order]){
add_area=(x_min[order]-user_y[order][ko].x)*(user_y[order][ko].y-y_min[order])+(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
else if(user_y[order][ko].x>x_max[order]){
add_area=(user_y[order][ko].x-x_max[order])*(user_y[order][ko].y-y_min[order])+(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
else{
flag_10=false;
add_area=(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
}
ko++;
if(flag_10){
for(int i=0;i<10&&ko<USER_N-1;i++,ko++){
if(user_y[order][ko].x<x_max[order]&&user_y[order][ko].x>x_min[order]){
add_area_temp=(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
if(add_area_temp<add_area){
temp=ko;
add_area=add_area_temp;
}
break;
}
}
}
ko=ky-1;
flag_10=true;
while(user_flag[order][ko]&&ko>0) ko--;
if(!user_flag[order][ko]){
temp=ko;
if(user_y[order][ko].x<x_min[order]){
add_area_temp=(x_min[order]-user_y[order][ko].x)*(y_max[order]-user_y[order][ko].y)+(x_max[order]-x_min[order])*(y_min[order]-user_y[order][ko].y);
}
else if(user_y[order][ko].x>x_max[order]){
add_area_temp=(user_y[order][ko].x-x_max[order])*(y_max[order]-user_y[order][ko].y)+(x_max[order]-x_min[order])*(y_min[order]-user_y[order][ko].y);
}
else{
flag_10=false;
add_area_temp=(x_max[order]-x_min[order])*(y_min[order]-user_y[order][ko].y);
}
if(add_area_temp<add_area){
temp=ko;
add_area=add_area_temp;
}
}
ko++;
if(flag_10){
for(int i=0;i<10&&ko>0;i++,ko--){
if(user_y[order][ko].x<x_max[order]&&user_y[order][ko].x>x_min[order]){
double add_area_temp=(x_max[order]-x_min[order])*(y_min[order]-user_y[order][ko].y);
if(add_area_temp<add_area){
temp=ko;
add_area=add_area_temp;
}
break;
}
}
}
ko=kx+1;
flag_10=true;
while(user_flag[order][ko]&&ko<USER_N-1) ko++;
if(!user_flag[order][ko]){
temp=ko;
if(user_y[order][ko].x<x_min[order]){
add_area=(x_min[order]-user_y[order][ko].x)*(user_y[order][ko].y-y_min[order])+(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
else if(user_y[order][ko].x>x_max[order]){
add_area=(user_y[order][ko].x-x_max[order])*(user_y[order][ko].y-y_min[order])+(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
else{
flag_10=false;
add_area=(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
}
}
ko++;
if(flag_10){
for(int i=0;i<10&&ko<USER_N-1;i++,ko++){
if(user_y[order][ko].x<x_max[order]&&user_y[order][ko].x>x_min[order]){
add_area_temp=(x_max[order]-x_min[order])*(user_y[order][ko].y-y_max[order]);
if(add_area_temp<add_area){
temp=ko;
add_area=add_area_temp;
}
break;
}
}
}
return temp;
}
uj5u.com熱心網友回復:
沒人能幫幫么~uj5u.com熱心網友回復:
應該是沒人愿意看,亂碼一樣的東西,看明白得費不少時間
uj5u.com熱心網友回復:
沒有程式注釋,沒有變數說明,沒有格式,三無產品轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140621.html
標籤:基礎類
下一篇:openldap的屬性修改問題
