【发布时间】:2019-10-19 04:24:14
【问题描述】:
假设我们有以下一组数组,每个数组可以有不同数量的成员:
13 2 17 5
2 3 4 5
6 1 70 9
3 90 2 25
还有一个限制N = 72。有没有一种算法可以计算最接近N 的总和,记住我们必须只使用每个数组中的一个元素?
更新,我已经完成了输入,如下
#include <iostream>
#include <vector>
int main() {
std::ios::sync_with_stdio(false);
int T,B,N;
std::cin>>T>>B>>N;
std::vector<std::vector<int>> arr;
for(int i=0;i<N;i++)
{
int temp;
std::cin>>temp;
std::vector<int> row;
for(int i=0;i<temp;i++)
{
row.push_back(0);
}
arr.push_back(row);
}
for(int i=0;i<N;i++)
{
for(int j=0;j<arr.at(i).size();j++)
{
int temp;
std::cin>>temp;
arr.at(i).at(j)=temp;
}
}
return 0; }
【问题讨论】:
-
到目前为止你有没有尝试过任何想法?
-
我有理由假设你会从
N中减去每个数组中可能的最大数字,剩下的就是最接近的?起初认为这可行,但我不确定它是否会在任何情况下中断。 -
N = 72是上限还是你能超过它? -
欢迎来到 SO!这个问题有点宽泛。是的,当然有一种算法可以做到这一点,但 SO 是关于帮助您解决代码中的特定问题,而不仅仅是为您提供算法。如果您发布 minimal reproducible example 显示您的尝试,您将更有可能获得具体答案。问一个与语言无关的算法问题是可以的,但它仍然应该有一个尝试(然后你可以删除语言标签)。谢谢。
-
@Rietty 我认为您的意思是“从数组和 N 中减去每个数组中的最小数字”,以减少问题。