1 回答
TA贡献1871条经验 获得超8个赞
#include <iostream>
using namespace std;
int n;
int begin_Level, max_Level;
int res, value[100];
// 深度优先搜寻
void dfs(int t, int k = 1)
{
if( t<0 || t>max_Level )
return;
if( k == n ){
if( t>res && t>=0 && t<=max_Level )
res = t;
return;
}
t -= value[k]; // try -
dfs(t, k+1);
t += value[k];
t += value[k]; // try +
dfs(t, k+1);
t -= value[k];
}
int main()
{
// 若有要求输入输出文件,自行解决
while( cin >> n >> begin_Level >> max_Level )
{
res = -1;
for(int i = 1; i < n; ++i)
cin >> value[i];
dfs(begin_Level);
cout << res << endl;
}
return 0;
}
- 1 回答
- 0 关注
- 625 浏览
添加回答
举报