前言:在阿里前端测试在线编程时,突然蹦出一个C++的题目,一脸懵之后开始做题。果然,浪费了时间得结果就是上交了错误答案。所以还是要勤打代码啊( ̄▽ ̄)",所以写篇博客记录下来。以后记录就放博客了,不放有道云了:-D
题目:大致为有n个箱子按顺序排列,打开每个箱子有要付相应的钱,打开后会告诉你大奖在这个箱子的左边还是右边。问要得出大奖需要最少付出多少钱。
输入箱子个数:n
输入打开每个箱子的价格:...
#include <iostream>
using namespace std;
int allValue;
int dung(int *arr,int start,int endN);
int dung(int *arr,int start,int endN)
{ int num = (endN-start)/2;
int ou = 0;
int flag = 0;
allValue += arr[num+start];
if(num > 1){
dung(arr,start,start+num-1);
}else{
flag +=1;
}
if(endN-num-start > 1){
dung(arr,start+num+1,endN);
}else{
flag +=1;
}
if(flag == 2){
return 0;
}
}
int main()
{ int res;
allValue = 0;
int _eggs_size = 0;
cin >> _eggs_size;
int *_eggs=new int[_eggs_size+1];
int _eggs_item;
_eggs[0]=0;
for(int _eggs_i=1; _eggs_i<=_eggs_size; _eggs_i++)
{
cin >> _eggs_item;
_eggs[_eggs_i] = _eggs_item;
}
dung(_eggs,1,_eggs_size);
cout << allValue << endl;
delete[] _eggs;
return 0;
}
暂时就用分治法做了,如果有什么不对和建议欢迎提出~