求助函数返回值
  • 板块灌水区
  • 楼主miaojintao
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/9/25 19:18
  • 上次更新2023/11/4 05:39:48
查看原帖
求助函数返回值
408859
miaojintao楼主2021/9/25 19:18

先上代码。

//求最大子数组;
#include<iostream>
#include<climits>
using namespace std;
int fmcs(int a[],int low,int mid,int high){
	int l_sum,r_sum,sum=0,mid_low,mid_high;
	l_sum=INT_MIN;
	for(int i=mid;i>=low;i--){
		sum+=a[i];
		if(sum>l_sum){
			l_sum=sum;
			mid_low=i;
		}
	}
	sum=0;
	r_sum=INT_MIN;
	for(int i=mid+1;i<=high;i++){
		sum+=a[i];
		if(sum>r_sum){
			r_sum=sum;
			mid_high=i;
		}
	}
	return (mid_low,mid_high,l_sum+r_sum);
}

int fms(int a[],int low,int high){
	int mid,l_low,l_high,l_sum,r_low,r_high,r_sum,c_low,c_high,c_sum;
	if(high==low) return(low,high,a[low]);
	mid=(low+high)/2;
	(l_low,l_high,l_sum)=fms(a,low,mid);
	(r_low,r_high,r_sum)=fms(a,mid+1,high);
	(c_low,c_high,c_sum)=fmcs(a,low,mid,high);
	if(l_sum>=r_sum && l_sum>=c_sum) return (l_low,l_high,l_sum);
	else if(r_sum>=l_sum && r_sum>=c_sum) return (r_low,r_high,r_sum);
	else return (c_low,c_high,c_sum);
}
int main(){
	int n,i,a[200002];
	cin>>n;
	for(i=0;i<n;i++){
		cin>>a[i];
	}
	cout<<fms(a,0,n-1)<<endl;//离谱;
	return 0;
}

如标记离谱所示。

fms函数返回的是形如(low,high,sum),但直接输出为什么总是输出sum。

求dalao解答。

bdfs无果。

另外讨论区结尾是不是也一定要加句号。

2021/9/25 19:18
加载中...