求助!小弟又掉坑里了!(oj时间超限,六十分)

c++小白歼31 2020-03-08 03:18:39
...全文
479 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
题目不复杂,就是要做个标记,原想拷贝或创建一个数组作为标记,后来觉得使用字符串较方便,而出问题应该就在没做标记。
一星伴月 2020-03-09
  • 打赏
  • 举报
回复
这题还是比较简单吧,最多o(n^2)
  • 打赏
  • 举报
回复
重新审题发现是有限制的,每个可表示数只能是找到的第一个,后面虽有也不算数,因此,要设一个标记,可使用数组做标记,标记已经是算过了的,如5+2=7是第一次找到的算1,3+4=7第二次找到就不能算了,因此这个找到的7要做个标记。
我采用字符串来做标记因为字符串也是数组且可使用现成函数查找标记,用起来比较方便。


使用数组int aa[]{1,2,3,4,5,6,7,8,9}

假设不限重复
GKatHere 2020-03-08
  • 打赏
  • 举报
回复
a[10001],不要放在栈中
c++小白歼31 2020-03-08
  • 打赏
  • 举报
回复
引用 3 楼 智者知已应修善业 的回复:
2个嵌套循环就够了,不用三套车。

麻烦问一下怎样用两层循环呢,大神
  • 打赏
  • 举报
回复
2个嵌套循环就够了,不用三套车。
燚认 2020-03-08
  • 打赏
  • 举报
回复
你这是哪里来的题啊?
yakeMili 2020-03-08
  • 打赏
  • 举报
回复
你试试先申请一个20000大的哈希表,然后遍历数组:得到一个值后先查找哈希表有没有这个值,然后再把这个值和他前面所有的值一次相加放在哈希表里,这样应该复杂度到n的平方。

int res=0;
//N 是第一行输入,input是第二行输入
unordered_map<int> hash;
for(int i=0;i<N;i++){
    if(hash.find(input[i]) != hash.end()){
        res++;
    }
    for(int j=0;j<i;j++){
        hash.insert(input[i]+input[j]);
    }
}

65,182

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧