#include<stdio.h>
#include<vector>
using namespace std;
const int maxn = 30;
int n, k, x, maxSumSqu = -1, A[maxn];
vector<int> temp;
vector<int> ans;
void DFS(int index, int nowK, int sum, int sumSqu)
{
if(nowK == k && sum == x)
{
if(sumSqu > maxSumSqu)
{
maxSumSqu = sumSqu;
ans = temp;
}
return;
}
if(index > n || nowK > k || sum > x) return;
// 岔路口 —— 选
temp.push_back(A[index]);
DFS(index + 1, nowK + 1, sum + A[index], sumSqu + A[index] * A[index]);
temp.pop_back();
// 岔路口 —— 不选
DFS(index + 1, nowK, sum, sumSqu);
}
int main()
{
// ......
return 0;
}
DFS——选数问题
猜你喜欢
转载自blog.csdn.net/tian__si/article/details/113914835
今日推荐
周排行