C ++指针棘手求和检查

时间:2015-03-10 14:21:59

标签: c++ list pointers sum

这是我的第一篇文章,但我经常光顾SO以获得帮助。如果我没有遵循正确的礼节,请继续,请耐心等待。所以简单来说,我正在处理涉及指针的棘手问题。我会在这里复制并粘贴它,因为我担心我会遗漏重要信息:

给出in_len(指向最后一个元素的指针)的PHB列表(1000个元素 - 1-100的整数),没有任何重复项并且由in_list指向,该函数将:

  • (1)确定是否有可能在5个连续元素内生成31的总和;
  • (2)如果可能,返回out_list指向的一个列表,该列表由列表的位置组成,其列表的相关值加起来为31;
  • (3)如果可能,返回out_len指向的列表长度。

请注意,每个元素只能使用一次。此外,如果存在多个案例,则只需返回一个列表。例如,如果PHB列表为{9, 5, 16, 22, 1, 37, 26, 14},则函数的返回值为true,out_list包含{9, 5, 16, 1},其长度为4,或者包含{9, 22},其长度为2.请注意,列表{16, 1, 14}不合格,因为三个值的集合跨越5个元素。另一个例子,如果PHB列表是{9, 5, 34},则返回false。 out_list将为空,长度为0.

那就是它。起初,我试图用大量的选项进行硬编码(按照

的方式)
if *in_list, *(in_list + 1), *(in_list + 2), *(in_list + 3), *(in_list+4)   
     add up to 31, 
//not actual code-just odd formatting

or *in_list, *(in_list + 1), *(in_list + 2), *(in_list + 3),  add up to 31
or *in_list, *(in_list + 1), *(in_list + 2), *(in_list + 4), add up to 31
or *in_list, *(in_list + 1), *(in_list + 3), *in_list + 4), add to 31
or *in_list, *(in_list + 2), *(in_list + 3), *(in_list + 4) add to 31
or *in_list, *(in_list + 1), *(in_list + 2),  add up to 31 

etcetc, 但很快意识到我只是不知道我在这里做了什么。幸运的是,out_list只需要一个加起来为31的列表。我很感激任何帮助。 谢谢你的时间!

解决方案(谢谢大家的建议): http://pastebin.com/2sSShWty

0 个答案:

没有答案