問題:dfs(index+1,nowk,sum,sumsqu);
又忘了使index+1。
在深蒐時,要不index+1,要不nowk+1,總得有乙個退出條件。
注意:ans=temp;
vector竟然有這種賦值方式。
#include
#include
using namespace std;
//從n個數選k個數使其和為x,如有多個,則選平方和最大方案
int n,k,x,maxsumsqu=-1
,a[30];
vector<
int> temp,ans;
//temp暫存所選數,ans為平方和最大方案的陣列
void
dfs(
int index,
int nowk,
int sum,
int sumsqu)
return;}
if(nowk>k||sum>x||index==n)
return
;//已處理完n個數,或超過k個數,或和超過x,返回
temp.
push_back
(a[index]);
dfs(index+
1,nowk+
1,sum+a[index]
,sumsqu+a[index]
*a[index]);
//可重複選數
//dfs(index,nowk+1,sum+a[index],sumsqu+a[index]*a[index]);
temp.
pop_back()
;dfs
(index+
1,nowk,sum,sumsqu);}
intmain()
dfs(0,
0,0,
0);printf
("%d\n"
,maxsumsqu)
;for
(vector<
int>
::iterator it=ans.
begin()
;it!=ans.
end(
);it++
)return0;
}
數獨遊戲(dfs深搜)
如下所示,玩家需要根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個色九宮內的數字均含1 9,不重複 數獨的答案都是唯一的,所以,多個解也稱為無解 本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的目。但對會使用計算機程式設計的你來說,恐怕易如反掌了 本題的要...
全排列問題 深搜DFS
description 輸出自然數 1 到 n 所有不重複的排列,即 n 的全排列,要求所產生的任一數字序列中不允許出現重複的數字。input 第一行為乙個整數n。output 由1至n組成的所有不重複的數字序列,每行乙個序列。每個數字之間由空格隔開。sample input 1 3sample o...
八皇后問題(dfs深搜)
題目 洛谷 p1219 乙個如下的 6 6 的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列 2 4 6 1 3 5來描述,第 i個數字表示在第 i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5...