c++ - 大小为 k 且总和为 s 的子序列数
问题描述
解决方案
这可以使用背包方法解决。对于每个元素,您可以包含它或排除它。这是cpp代码:
ll knap(int values[],int n, int i, int length, int sum) { //ll is long long
if(s<0 || i>n-1 ||l<0) return 0;
if(s==0 && l==0) return 1;
ll a = knap(values,n,i+1,l-1,s-values[i]); //including current element
ll b = knap(values,n,i+1,l,s); //not including the current element and moving on
return (a+b);
}
推荐阅读
- android - Kotlin 不会在函数签名中检查具有某些返回类型的函数中的 return 语句
- apache-spark - PySpark 聚合和何时条件
- svn - 大型颠覆回购有没有好的服务器托管服务?
- batch-file - 如何批量读取文件?
- bots - Actions on Google - 我们可以为 Google Home 使用自定义语音吗?
- javascript - 如何创建多个对象并存储在一个对象中并传递给后端进程?
- jasmine - 开玩笑 - addEventListener ~ 点击断言
- java - IBM Domino 10 - 在 Java 中打开某些用户的日历(用于 createEntry)
- html - 仅将链接锚定到错误的页面位置一次
- r - 如何估计 R 中多边形交叉点的密度?