递归做,只过了4个点
查看原帖
递归做,只过了4个点
567380
hcb2902943766楼主2022/8/11 14:20
#include<iostream>
using namespace std;

long long a[100000],ans=0;

void f(int l,int r)	//左闭右开
{
	if(l>=r)	return ;
	int min=a[l],mini=l;
	for(int i=l+1;i<r;i++)
		if(a[i]!=0&&min>a[i])
		{
			min=a[i];
			mini=i;
		}
		
	ans+=min;
	
	for(int i=l;i<r;i++)
		a[i]-=min;
	
	f(l,mini);
	f(mini+1,r);
}

int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	f(0,n);
	cout<<ans;
	return 0;
}
2022/8/11 14:20
加载中...