编辑代码

#include <iostream>  
#include <vector>  
  
// 递归函数,用于生成所有可能的方案  
void generateSchemes(int remaining, int lastRun, std::vector<int>& currentScheme, std::vector<std::vector<int>>& allSchemes) {  
    if (remaining == 0) {  
        // 当剩余圈数为0时,表示找到了一种有效的方案  
        allSchemes.push_back(currentScheme);  
        return;  
    }  
  
    // 从lastRun+1开始循环,每次跑更多的圈数,直到remaining为0或无法再跑更多圈数  
    for (int i = lastRun + 1; i <= remaining; ++i) {  
        currentScheme.push_back(i);  
        generateSchemes(remaining - i, i, currentScheme, allSchemes);  
        // 回溯  
        currentScheme.pop_back();  
    }  
}  
  
int main() {  
    int totalCircles = 10;  
    std::vector<std::vector<int>> allSchemes;  
    std::vector<int> currentScheme;  
  
    // 初始化第一次跑的圈数至少为1  
    generateSchemes(totalCircles, 0, currentScheme, allSchemes);  
  
    // 输出方案总数  
    std::cout << "Total schemes: " << allSchemes.size() << std::endl;  
  
    // 输出每种方案的排序  
    for (const auto& scheme : allSchemes) {  
        for (size_t i = 0; i < scheme.size(); ++i) {  
            std::cout << scheme[i];  
            if (i < scheme.size() - 1) {  
                std::cout << ",";  
            }  
        }  
        std::cout << std::endl;  
    }  
  
    return 0;  
}