导航
您当前的位置:首页 > 高教类 > 工学类
问题:

[单选题]已知求一组数据连续若干数和的最大值采用分治方法得到O(nlogn)的时间复杂度,请完成下面分治法求解的代码:PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 /************************************************************************/PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 /*    分治法PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     最大和子数组有三种情况:PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     1)A[1...mid]PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     2)A[mid+1...N]PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     3)A[i..mid..j]PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 /************************************************************************/PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 //find max crossing left and rightPtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 int Find_Max_Crossing_Subarray(int arr[], int low, int mid, int high)PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     const int infinite = -9999;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     int left_sum = infinite;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     int right_sum = infinite;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     int max_left = -1, max_right = -1;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     int sum = 0; //from mid to left;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     for (int i = mid; i >= low; i --) {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         sum += arr[i];PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         if (sum > left_sum) {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
             left_sum = sum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
             max_left = i;       PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     sum = 0;  //from mid to rightPtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     for (int j = mid + 1; j <= high; j ++) {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         sum += arr[j];PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         if (sum > right_sum) {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
             right_sum = sum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
             max_right = j;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
        }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     return (left_sum + right_sum);PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 int Find_Maximum_Subarray(int arr[], int low, int high)PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     if (high == low) //only one element;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         return arr[low];PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     else {PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         int mid = (low + high)/2;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         int leftSum = Find_Maximum_Subarray(arr, low, mid);PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         int rightSum = Find_Maximum_Subarray(arr, mid+1, high);PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
         int crossSum = Find_Max_Crossing_Subarray(arr, low, mid, high);PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
        ——————————完成这里的代码——————————————————PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
     }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 }PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
A.if(leftSum>rightSum && leftSum>crossSum) return leftSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
if(rightSum>leftSum && rightSum>crossSum) return rightSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
if(crossSum>leftSum && crossSum>rightSum)return crossSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
B.if(leftSum>rightSum)PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
{PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
    if(leftSum>crossSum)return leftSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
    else return crossSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
}PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
elsePtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
{PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
  if(rightSum>crossSum)return rightSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
  else return crossSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
}PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
C.if(leftSum>rightSum>crossSum) return leftSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
else if(rightSum>leftSum>crossSum) return rightSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
else if(crossSum>leftSum>rightSum)return crossSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
D.if(leftSum>rightSum>crossSum) return leftSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
if(rightSum>leftSum>crossSum) return rightSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
if(crossSum>leftSum>rightSum)return crossSum;PtS答案窝(daanwo.com)-大学生作业答案及考资分享平台
 
答案解析:

相关问题
关于我们 | 用户指南 | 版权声明 | 给我留言 | 联系我们 | 积分商城 | 答案求助 | 网站地图
Copyright © 2024 www.daanwo.com All Rights Reserved