3858:和数
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。
输入
第一行是一个整数T,表示一共有多少组数据。 1<= T <= 100
接下来的每组数据共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个整数组成的数列。
输出
对于每组数据,输出一个整数(占一行),就是数列中等于其他两个数之和的数的个数。
样例输入
2
4
1 2 3 4
5
3 5 7 9 10
样例输出
2
1

问题链接*:Bailian3858 和数
问题简述:(略)
问题分析
    这个问题的关键在于“判断其中有多少个数,等于数列中其他两个数的和”这句话中的“其他”两个字。
    暴力法解决比较简单一些,但是需要三重循环。
    另外一种方法是先将和放入一个集合中,然后再统计数量,但是需要考虑特殊的情况。这些特殊情况是跟给定数据中的0有关,需要进行分析,逻辑稍微复杂。
程序说明:(略)
参考链接:(略)
题记:基于控制流的暴力法简单实用,基于数据流的解题方法方显高级程序员的英雄本色。

AC的C语言程序(暴力法)如下:

/* Bailian3858 和数 */#include <stdio.h>
#include <string.h>#define N 100
int a[N], flag[N];int main()
{int t, n, i, j, k;scanf("%d", &t);while(t--) {scanf("%d", &n);for(i = 0; i < n; i++)scanf("%d", &a[i]);int cnt = 0;memset(flag, 0, sizeof(a));for(i = 0; i < n; i++)for(j = 0; j < n; j++)for(k = j + 1; k < n; k++)if(flag[i] == 0 && i != j && i != k && (a[i] == a[j] + a[k])) {cnt++;flag[i] = 1;}printf("%d\n", cnt);}return 0;
}

AC的C++语言程序如下:

/* Bailian3858 和数 */#include <iostream>
#include <set>
#include <map>
#include <cstdio>using namespace std;const int N = 100;
int a[N];int main()
{int t, n;scanf("%d", &t);while(t--) {scanf("%d", &n);map<int, int> mp;for(int i = 0; i < n; i++) {scanf("%d", &a[i]);mp[a[i]]++;}set<int> s;for(int i = 0; i < n; i++)for(int j = i + 1; j < n; j++)if((a[i] && a[j]) ||(mp[0] >= 3 && a[i] == 0 && a[j] == 0) ||(mp[0] >= 1 && a[i] == 0 && a[j] != 0 && mp[a[j]] >= 2) ||(mp[0] >= 1 && a[j] == 0 && a[i] != 0 && mp[a[i]] >= 2))s.insert(a[i] + a[j]);int cnt = 0;for(int i = 0; i < n; i++)if(s.find(a[i]) != s.end()) cnt++;printf("%d\n", cnt);}return 0;
}/*
1
9
0 0 0 -1 1 2 3 5 -31
7
0 0 0 -1 1 2 51
5
0 0 0 2 51
4
0 0 0 11
3
0 0 01
5
0 0 0 1 11
3
0 1 1*/

WA的C语言程序如下:

/* Bailian3858 和数 */#include <stdio.h>
#include <string.h>#define N 100
int a[N];
int sum[N * N + 1], k;int search(int x)
{int i;for(i = 0; i < k; i++)if(x == sum[i]) return 1;return 0;
}int main(void)
{int t, n, i, j;scanf("%d", &t);while(t--) {scanf("%d", &n);for(i = 0; i < n; i++)scanf("%d", &a[i]);k = 0;for(i = 0; i < n; i++)for(j = i + 1; j < n; j++)if(a[i] && a[j])sum[k++] = a[i] + a[j];int cnt = 0;for(i = 0; i < n; i++)if(search(a[i])) cnt++;printf("%d\n", cnt);}return 0;
}

Bailian3858 和数【暴力+集合】相关推荐

  1. 程序设计入门经典题解(百练篇)

    参考链接:PKU百练题解(Bailian) Bailian1017 装箱问题[贪心] - 海岛Blog - CSDN博客 POJ1088 Bailian1088 滑雪[DFS+记忆化搜索]_海岛Blo ...

  2. 【BZOJ4547】【HDU5171】小奇的集合,暴力+矩阵乘法

    Time:2016.08.18 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 基本想法是每次找出最大的两个相加即可 而且由于题目要求,起始的n个数中至少有一个是正整数 ...

  3. L2-005 集合相似度(STL+暴力)

    题目连接 https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608 视频讲解 https://www. ...

  4. [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(八)暴力破解相关面试题

  5. Bailian2792 集合加法【数学】

    2792:集合加法 总时间限制: 3000ms 内存限制: 65536kB 描述 给出2个正整数集合A = {pi | 1 <= i <= a},B = {qj | 1 <= j & ...

  6. 枚举 ---- Codeforces Round #711 (Div. 2) D. Bananas in a Microwave[枚举暴力+思维优化]

    题目链接 题目大意: 就是你有n次操作,每次操作给你三个参数:ti,xi,yit_i,x_i,y_iti​,xi​,yi​. 如果ti==1t_i == 1ti​==1你可以进行k=k+xik=k+x ...

  7. java迭代器创建后mutx锁,java集合【5】—— Collections接口源码解析

    一.Collections接口是做什么的? 用官网文档的介绍:The polymorphic algorithms described here are pieces of reusable func ...

  8. 实例 | 利用犯罪记录聚类和分类暴力行为(附步骤解析)

    作者:Kenny Moy 翻译:白静 校对:闵黎 本文约2200字,建议阅读8分钟. 本文为你介绍如何通过犯罪记录应用监督学习及无监督学习将暴力案件正确分类. 介绍 很高兴知道Data Science ...

  9. AI“暴力美学”背后,预训练模型如何乘风破浪?

    作者 | 张俊林 来源 | 深度学习前沿笔记专栏 Bert模型自18年10月推出,到目前为止快两年了.它卜一问世即引起轰动,之后,各种改进版本的预训练模型(Pre-Training Model, PT ...

最新文章

  1. 重复调用的代码块——方法
  2. bzoj 3100 排列
  3. Javascript中的陷阱大集合【译】
  4. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0
  5. 分析攻击IP来源地并画出饼图
  6. 循环划线_经济内外双循环下的思考!
  7. ieda ts文件报错_使用TS开发微信小程序(1):环境搭建——VSCode+TS
  8. docker 容器数据卷
  9. java integer 不变模式_《JAVA与模式》之不变模式
  10. scikit-learn学习资源
  11. pdf论文中查看使用的字体
  12. 常用服务和开放端口对照表
  13. Manjaro/Arch 软件配置安装
  14. PHP TOP5开源小程序商城盘点
  15. Python-个人笔记-Tensorflow-PINN-Plotting
  16. Sklearn上机笔记--标准化
  17. 从0开始安装k8s1.25【最新k8s版本——20220904】
  18. 使用javax.servlet.http.Part类上传文件
  19. maven jpa mysql_Maven 版 JPA 最佳实践
  20. Hive正则表达式对数据过滤

热门文章

  1. [胡言乱语] 20170622
  2. GDAL升级到3.0之后遇到的坑
  3. JavaWeb——swagger使用
  4. JS中prototype、__proto__以及原型链
  5. oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]
  6. JFinal(一)JFinalConfig
  7. spark和hadoop的区别
  8. Ubuntu中切换用户
  9. Error in callback for watcher “value“: “TypeError: Cannot read property ‘repalce‘ of null“
  10. java框架注入是创建对象吗_spring之IOC容器创建对象