用数组的方法做合并果子问题。
一开始一直有问题,后来发现sort函数的结束地址参数给错了,比如有5个数据,第一个起始参数地址是a,那最后一个应该给a+5而不是a+4。 还是要细心一点啊😓
下面是代码:
//合并果子
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int cnt = 0;
int n;
int rst = 0;
int s[20100];
void merge(int start,int end);
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> s[i];
}
merge(0,n-1);
return 0;
}
void merge(int start,int end)
{
if(start == end)
{
cout << rst <<endl;
return;
}
else if(start < end)
{
sort(s+start,s+end+1);
s[end+1] = s[start]+s[start+1];
rst += s[end+1];
merge(start+2,end+1);
}
}