先上代码:
#include <bits/stdc++.h>
using namespace std;
struct bead // 能量珠
{
int head;
int tail;
};
void bead_input(int a[], int n) // 输入函数
{
for (int i = 1; i <= n; i++)
{
cin >> a[i].head;
a[i - 1].tail = a[i].head;
}
a[n].tail = a[1].head;
return;
}
int best(const bead r[], int n, int & best_test, int old_now_test = 0) // 最优方案
{
if (now_test > best_test)
{
return;
}
int new_now_test = old_mow_test;
bead a[105];
memset(a, 0, n);
for (int i = 1; i <= n; i++)
{
a[i] = r[i];
}
for (int i = 1; i <= n; i++)
{
now_test += a[i].head * a[i].tail * a[i].head; // 叠加记录
a[i].tail = a[i + 1].tail; // 更行数据
for (int j = i + 1; j <= n - 1; j++) // 更新数组
{
a[j] = a[j + 1];
}
best(a, n - 1, best_test, new_now_test); // 进行下一层递归
for (int j = 1; j <= n; j++) // 立即回溯数组
{
a[j] = r[j];
}
new_now_test = old_new_test; // 立即回溯记录
}
if (!n) // 超出最后一层递归,结尾判断大小
{
best_test = max(best_test, now_test);
}
return;
}
int main()
{
int n, best_test = -1; // n为个数,best_test为当前最佳测试数据
bead a[105]; // 能量项链
cin >> n;
bead_input(a, n);
cout << best(a, n, best_test) << endl;
return 0;
}
编译错误,求大神纠错,最好把所有错误都debug出来,思路清晰,纠错最多,谢谢!!!