如何有效地制作升序序列
How to effectively make ascending sequences?
我目前正在尝试制作一个涉及升序序列的程序。N为序列的大小,K为最大值,例如
输入:2,3
输出:6 (1,1 - 1,2 - 1,3 - 2,2 - 2,3 - 3,3)
我当前的代码输出的不是6而是3。我知道这可能不是求序列数量的方法。在我看来,这个递归有问题。你能帮我找到问题并解决吗?
#include<iostream>
using namespace std;
long long n,k,cnt=0;
long long seq(long long n, long long k, long long first){
if(n==first){
return cnt;
}
for(long long i=first;i<=k;i++){
cnt = cnt + 1;
}
return seq(n,k,first+1);
}
int main()
{
long long n,k;
cin>>n>>k;
cout<<seq(n,k,1);
return 0;
}
对于给定的n和k
long long seq(long long n, long long k,long long first,long long depth){
if(depth > n){
cnt = cnt + 1; // A leaf node is hit in the recursion tree
return cnt;
}
else {
for(long long i= first;i<=k;i++){
seq(n,k,i,depth+1); // Continue recursion
}
}
return cnt;
}
int main()
{
long long n,k;
cin>>n>>k;
cout<<seq(n,k,1,1);
return 0;
}
运行代码:http://cpp.sh/4xr7a
相关文章:
- 有效地使用std::unordered_map来插入或增加键的值
- 如何有效地在 std::vector 中插入一对?
- 有效地计算多维数组的累积和?
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 有效地将大数存储为 2 的幂用于路径问题
- 如何在C++中写入 1000 个文件时有效地缓冲
- 如何有效地找到数组中三元组和的最小差异?
- 如何在C++中有效地将数字值重新分配给字符数组
- C++有效地找到向量中第一个最接近的匹配值?
- 如何有效地操作满足给定谓词的向量中的所有项目?
- 有效地将数据加载到 std::vector 中<char>
- 如何在使用 cin 请求 int 时有效地使用户输入万无一失?
- C++:有效地将Sha256摘要放入OpenSSL Bignum?
- 如何有效地收集给定数组中的重复元素?
- 如何有效地修剪和合并四叉树中的节点?
- 可以有效地转换 std::any 与 std::any_cast
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- (c++)如何有效地生成升序序列(dyn. solution)
- 如何有效地制作升序序列