gpt4 book ai didi

c++ - 如何解决这个寻找最大值和最小值的递归(分而治之)过程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:57 26 4
gpt4 key购买 nike

为了在递归和分治法中找到最大值最小值,我使用伪代码进行编码。但是这段代码有一个问题,我找不到maximum & minimummaximum & minimum 的结果在这里不正确。

#include <bits/stdc++.h>
using namespace std;

int num[50000], max1 = 0, min1 = 0, max2 = 0, min2 = 0;

void maxmin(int i, int j, int &max1, int &min2)
{
if(i == j)
max1 = min1 = num[i];
else if(i == j - 1)
{
if(num[i] < num[j])
{
max1 = num[j];
min1 = num[i];
}
else
{
max1 = num[i];
min1 = num[j];
}
}
else
{
int mid = (i + j) / 2;
maxmin(i, mid, max1, min1);
maxmin(mid+1, j, max2, min2);
if(max1 < max2)
max1 = max2;
if(min1 > min2)
min1 = min2;

}
}

main()
{
int n, i, minValue, maxValue;
cout<<"No. of Data: ";
cin>>n;
cout<<"\nRange(min, max): ";
cin>>minValue>>maxValue;
for(i=0; i<n; i++)
{
num[i] = minValue+(rand()%(int)(maxValue-minValue+1));
}
maxmin(0, n-1, max1, min1);
cout<<"\nMax: "<<max1<<"\tMin: "<<min1<<endl;
}

这个伪代码/代码有什么问题??

最佳答案

maxmin(0, n-1, max1, min1); 中,您是否希望通过引用传递 max1max2 ?如果是这样,您需要将函数签名修改为:

void maxmin(int i, int j, int & max1, int & min2)

关于c++ - 如何解决这个寻找最大值和最小值的递归(分而治之)过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com