題目來源 https://zerojudge.tw/ShowProblem?problemid=d115
DFS(深度優先演算法)練習題
這題算是很標準很單純的DFS練習題了,硬要說的話就是前面多了一個由小到大的排序,非常適合剛開始學習DFS的設計師。
DFS網路上的說明非常多了,這邊就不贅述,如果爬文不是很了解的話,歡迎寄信或私訊我詢問囉。
以下附上程式碼:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int m;
void dfs(vector<int> v , int index , vector<int> ans) {
ans.push_back(v[index]);
v.erase(v.begin() + index);
if(ans.size() == m) {
for(int i = 0; i < m; i++) {
cout << ans[i] << " ";
}
cout << "\n";
}
for(int i = index; i < v.size(); i++) {
dfs(v , i , ans);
}
}
int main()
{
vector<int> v;
int n;
cin.tie(0) , cin.sync_with_stdio(false);
int t;
string s;
vector<int> temp;
while(cin >> n) {
v.clear();
for(int i = 0; i < n; i++) {
cin >> t;
v.push_back(t);
}
sort(v.begin() , v.end());
cin >> m;
s = "";
for(int i = 0; i < n; i++) {
dfs(v , i , temp);
}
}
return 0;
}
沒有留言:
張貼留言