DFS的簡單例子

2021-08-25 14:49:18 字數 866 閱讀 4668

例題:給定n個整數,從中選擇k個數,使得這k個數之和恰好等於乙個給定的整數x;如果有多種方案,選擇它們中元素平方和最大的乙個。

如:從4個整數中選擇2個數,使它們的和為6。平方和最大的方案為,和為20。

其中,遞迴函式需有以下4個部分:

1.滿足條件

2.越界

3.未滿足條件,進入下一層

4.走完該路徑,換走另一條

#include#include#includeusing namespace std;

const int maxn = 50;

int n,k,x,maxsumsqu = -1,a[maxn];

vectortemp,ans;

void dfs(int index,int nowk,int sum,int sumsqu)

return;

} if(index == n || nowk > k || sum > x) return; //2.越界

temp.push_back(a[index]); //3.未滿足條件,進入下一層

dfs(index + 1, nowk + 1,sum + a[index],sumsqu + a[index]*a[index]);

temp.pop_back(); //4.走完該路徑,換走另一條

dfs(index + 1,nowk,sum,sumsqu);

}int main()

dfs(0,0,0,0);

printf("%d",maxsumsqu);

return 0;

}

簡單的makefile例子

1.2.3 簡單的示例 本小節開始我們在第一小節中提到的例子。此例子由3個頭檔案和8個c檔案組成。我們講述寫乙個簡單的makefile,來描述如何建立最終的可執行檔案 edit 此可執行檔案依賴於8個c原始檔和3個頭檔案。makefile檔案的內容如下 sample makefile edit ma...

簡單的iocp例子

include include include include include using namespace std define i port 1666 define i addr 0.0.0.0 define dft buffer size 4096 define opt read 0 def...

Scala簡單的例子

anonymousfunc類如下所示 object anonymousfunc else if brand hp else println color printlntest object printlntest println for i 0 to 5 println val map map 0 ...