4 条题解

  • 4
    @ 2025-7-2 0:48:33

    看了下题解 怎么全是 暴力枚举——十重for循环 这题不是标准的dfs吗?

    AC code

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int n; // 美味程度
    vector<int> current(10, 0); 
    vector<vector<int>> results; 
    
    void dfs(int sum, int index) {
        if (index == 10) {
            if (sum == n) {
                results.push_back(current); // 如果满足美味程度n,记录下当前组合
            }
            return;
        }
        
        for (int i = 1; i <= 3; ++i) {
            current[index] = i;
            dfs(sum + i, index + 1); 
        }
    }
    
    int main() {
        cin >> n;
    
        dfs(0, 0);
    
        cout << results.size() << endl;
        for (const auto& result : results) {
            for (int i = 0; i < 10; ++i) {
                cout << result[i] << " ";
            }
            cout << endl;
        }
    
        return 0;
    }
    
    

    信息

    ID
    6137
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    145
    已通过
    80
    上传者