【发布时间】:2019-05-26 03:51:16
【问题描述】:
我在这里找到了可以由这些(用户输入)数字形成的最大总和,但用于求和的数字不应该有任何共同的数字。
- 我们得到了
n号码。 - 我们查看此数字的所有子集,其中每个数字出现不超过一次。
- 对于这个子集,我们计算总和。
- 然后我们正在寻找这些总和的最大值。
例如。输入病例数 n=5
0 1 2 3 - > 6 ( no repeated digits here ) 0+1+2+3
3 30 8 1 - > 39 ( here 3 is repeated so choose max from 3 & 30 i.e. 30) 30+8+1
11 21 31 41 - > 41 ( here 1 is repeated to all so max number will print ) 41
11 5 45 88 - > 99 ( here 5 is repeated so choose max from 45 & 5 i.e 45 ) 11+88+45
17 69 78 89 -> 147 (69 + 78) = 147
int sum(int Ticket[], int n)
{
int max;
int abc;
for (int i = 0; i <= n; i++) {
for (int k = 0; k <= n; k++) {
abc = Ticket[i];
max = Ticket[i] + Ticket[i]
int len = to_string(abc).length();
for (int j = 0; j <= len; j++) {
std::string nstr = std::to_string(abc);
std::cout << "->" << nstr[j];
}
}
}
return max;
}
int main()
{
// n total number of array or numbers
int max = sum(Ticket, n);
}
问题是如何检查每个数字的唯一数字并形成最大和。
【问题讨论】:
-
嗨。发布此类问题的更好地方是code review
-
像
12 23 34 45这样的输入,看起来需要递归解决方案。 -
你的问题到底是什么?
-
请注意,代码块开头的四个示例给出了与问题陈述不同的算法。检查,例如,
17 69 78 89 -
@chux 对于输入,如 12 23 34 45 o/p 是 68 ( 45+ 23)