栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

回溯法:N块正方形的积木,搭不同楼梯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

回溯法:N块正方形的积木,搭不同楼梯

  • 一个小孩手中有了块正方形的积木,他总是想不同的方法来搭建各种不同的楼梯。他搭建的楼梯必须满足如下条件:
  • (1)楼梯每个台阶的砖块数不能相同,且严格递减
  • (2)每个楼梯至少包合两个台阶
  • (3)必须用完所有的积木

预计输入:10
输出:9
—
采用C++实现;
回溯算法;
后续更新剪枝的优化;以及注释;以及复杂度分析

// Created on 8848钛金平板.

#include 
#include
using namespace std;
class Solution{
    public:
    int ans;
    std::vectorpath;
    std::vector>result;
    
    void backtracking(int targetsum,int sum,int k,int startIndex)
    {
        if(path.size()==k&&sum==targetsum)
        {
            result.push_back(path);
            return ;   
        }
        if(sum==targetsum)
        {
            result.push_back(path);
            return ;   
        }
        for(int i=startIndex;i
            sum=sum+i;
            path.push_back(i);
            backtracking(targetsum,sum,k,i+1);
            sum=sum-i;
            path.pop_back();
        }
    }
    std::vector> combine(int n)
    {
        int k=n/2;
        backtracking(n,0,k,1);
        return result;
    }
};
int main() {
    int n;
    cin>>n;
    Solution A;
    A.combine(n);
    for(int i=0;i
        for(int j=0;j
            cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916932.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号