2020年8月16日 星期日

d115: 數字包牌

 題目來源 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;
}

沒有留言:

張貼留言

o079. 4. 最佳選擇

 題目描述: 給一個長度為 n 的正整數序列 a1,a2...an ,你可以執行多次操作 (包含 0 次),每次操作只能選擇這個序列的第一個或最後一個數字,再將這個數字從序列中刪除並自己搜集起來。 求滿足總和不超過 k 且搜集的數字奇數和偶數個數相同的條件下,所能搜集的數字總和最...