要求采用二分策略,设计一个求出其最大值。 输入格式: 第一行输入一个整数n。第二行为n个整数。n和n个数小于等于10000。 输出格式: n个整数中的最大值。

给定一个含n个整数顺序存储的线性表,按分治法思路,要求采用二分策略,设计一个求出其最大值。

输入格式:
第一行输入一个整数n。第二行为n个整数。n和n个数小于等于10000。

输出格式:
n个整数中的最大值。

这是一个经典的递归练习题,代码如下:

#include<stdio.h>

int FindMaxNum(int nums[], int left, int right)
{
    if (left == right){
        return nums[left];
    }
    
    int mid = (left + right) / 2;
    int leftMax = FindMaxNum(nums, left, mid);
    int rightMax = FindMaxNum(nums, mid + 1, right);
    
    if (leftMax < rightMax)
    {
        return rightMax;
    }
    return leftMax;
}

void main()
{
    int n;
    printf("请输入n:");
    scanf("%d", &n);

    int nums[n], c = 0;
    printf("请输入n个数字:");
    while (c < n)
    {
        scanf("%d", &nums[c]);
        c++;
    }

    int res = FindMaxNum(nums, 0, n - 1);
    printf("%d\n", res);
}

运行结果:

img


希望给个采纳,谢谢。