例題:給定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 ...