首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据范围创建名称

如何根据范围创建名称
EN

Stack Overflow用户
提问于 2019-07-17 07:03:01
回答 1查看 79关注 0票数 1

我需要创建基于相同范围的名称。下面的xml数组表示一些范围

代码语言:javascript
复制
<array>
 <range index="j" min="0" max="2" />
 <range index="k" min="1" max="6" />
 <range index = "l" min = "0" max = "1"/>
</array>

并可推广到m,n,o等。

因此,我想要的是能够以如下所示的方式获得名称:

BASENAME__1_0 (均值j=0,k=1,l= 0) BASENAME__1_0 BASENAME__2_0 BASENAME__2_0

根据最大值和最小值,最后一个元素应该是

BASENAME_2_6_1 (均值j=2,k =6,l =1)

如何编写c++代码来获得这样的"basename“,而不受范围限制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 07:24:20

generate函数接受两个参数:要探索的范围列表和树当前路径中的组合。如果范围列表为空,则打印组合。如果列表不是空的,则探索第一个范围(通过范围上的for循环),并为每种可能性调用递归函数。

代码语言:javascript
复制
#include <vector>
#include <iostream>
struct range {
    int lo, hi;
};

using ranges = std::vector<range>;
using state = std::vector<int>;

void generate(ranges rs, state s={}) {
    if (rs.empty()) {
        for (auto i : s) {
            std::cout << i << " ";
        }
        std::cout << std::endl;
    } else {
        range first = rs[0];
        rs.erase(begin(rs));
        s.push_back(0);
        for (int i = first.lo; i <= first.hi; i++) {
            s.back() = i;
            generate(rs, s);
        }
    }
}

int main() {
    range j {0, 2};
    range k {1, 6};
    range l {0, 1};
    generate({j,k,l});
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57070248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档