C语言复健(数组) 珠心算测验
目录
题目
输入格式
输入输出样例
说明/提示
题目分析及知识点复盘
1、挖坑
2、数组整体赋值的方法:
我的代码
别人的代码
题目
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
输入格式
共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。
第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式
一个整数,表示测验题答案。
输入输出样例
输入 #1复制
4 1 2 3 4
输出 #1复制
2
说明/提示
【样例说明】
由 1+2=3,1+3=4,故满足测试要求的答案为 22。
注意,加数和被加数必须是集合中的两个不同的数。
【数据说明】
对于 100% 的数据,3≤n≤100,测验题给出的正整数大小不超过 10,000。
题目分析及知识点复盘
1、挖坑
此题有坑!
①集合内可能有重复的求和结果,但题目要求给出的是满足要求的集合内元素的个数。故此处需要做一个是否重复的判断,具体方法例如可以新开一个数组,全部赋值为0,一旦做过判断,则标记为1,并在条件判断时加入对于此数组的判决。
②数组的大小一定要给够,存储输入数据的数组空间需大于100,求和结果最大为10000+10000=20000,空间要给够。
2、数组整体赋值的方法:
①声明时赋值(注意,此种方法只适用于全部赋值为0)
int a[100]={0};
若想全部赋值为其他数,如1,我之前的做法为:
int a[100]={1};
后来我发现,这种赋值法只会使得a[0]=1,而数组内的其他值全部为0.
之前在网上查到了另一个函数:
②memset函数(只能赋值为全0或全-1)
按照字节填充某字符
在头文件
<cstring>
里面使用方法memset(数组名,要填充的内容,单元大小)
int aa[maxn]; //memset函数把它当成字符型数组看待。赋值后先转化成字符型再转化为整型;
memset(aa,0,sizeof(aa)); //于是aa数组变成0;(字符的1个字节8个位都是0)。
memset(aa,0xff,sizeof(aa)); //对aa数组的每个值的一个字节进行赋值(0x代表16进制).
//此时aa数组都变成-1(计算机补码的规则,字符的一个字节8个位都是1,取反加1。)
③fill函数(可以赋任何值)
按照单元赋值,将一个区间的元素都赋同一个值
在头文件<algorithm>里面
使用方法:fill(起始地址,结束地址, 要填入的内容);
格式:fill(数组名称,数组+数组大小,赋值)
int a[100];
fill(a,a+100,1);//全体赋值为1
我的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{int num[101]={0},b[10000],a[10001]={0},i,j,k=0,n,sum=0;//num为输入的数组,b存储所有求和的结果,a用来做标记,0为未动过,1为动过cin>>n;for(i=0;i<n;i++){scanf("%d",&num[i]);}for(i=0;i<n-1;i++){for(j=i+1;j<n;j++,k++) //暴力循环求解排列组合问题b[k]=num[i]+num[j];//数组b用来存储所有求和的结果}for(i=0;i<k;i++)for(j=0;j<n;j++)if(b[i]==num[j]&&a[num[j]]==0)//条件判断时排除重复值{ sum++;a[num[j]]=1; //若已做过判断,则在此做标记,防止重复统计} cout<<sum;return 0;
}
注意此处a,b数组的大小一定要给够,不然会显示“出现异常”
别人的代码
#include <stdio.h>
int IsAddable[20001] = {0};
int main()
{int input[101], t;scanf("%d", &t);for (int i = 0; i < t; i++){scanf("%d", &input[i]);}for (int i = 0; i < t; i++){for (int j = i+1; j < t; j++){IsAddable[input[i]+input[j]] = 1;//将和的结果作为isaddable数组的下标,内容赋1}}int Answer = 0;for (int i = 0; i < t; i++){Answer += IsAddable[input[i]];//若下标为输入的元素,而内容为1,则表示符合要求,在此求和}printf("%d\n", Answer);return 0;
}
它的代码很巧妙地用IsAddable数组标记可加性,并且将和的结果作为此数组的下标而不是结果,最后将此数组所有输入元素集合下标的元素加起来,即为所求,很好地避免了重复。
C语言复健(数组) 珠心算测验相关推荐
- P2141 珠心算测验(C语言)
P2141 珠心算测验 1.桶排序思路(借鉴) 首先要理解题目的意思,就是两个数的和,只能出现一次. 如5 5=1+4 5=2+3 也只算一次 1.这个题目只要考虑两个 出现的数 两个数的和 2.首先 ...
- 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验
[题目链接] ybt 1965:[14NOIP普及组]珠心算测验 洛谷 P2141 [NOIP2014 普及组] 珠心算测验 [题目考点] 1. 枚举 [解题思路] 解法1:枚举判断每个数字是否是加和 ...
- Vijos P1911 珠心算测验【序列处理】
描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练, 既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠心算加法 ...
- 时空复杂度之珠心算测验
时空复杂度之珠心算测验 问题 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练, 既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采 ...
- 蓝桥杯 珠心算测验 C++算法提高 HERODING的蓝桥杯之路
资源限制 时间限制:1.0s 内存限制:256.0MB 解题思路: 时隔半个多月,我又开始更新了!这次的珠心算测验其实是一个枚举题目,把所有情况枚举出来,然后判断一下枚举的数是否有重复现象,结果是否有 ...
- 2014-1普及真题 珠心算测验
2014-1珠心算测验 问题描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...
- P2141 [NOIP2014 普及组] 珠心算测验————C++
题目 [NOIP2014 普及组] 珠心算测验 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普 ...
- python【蓝桥杯vip练习题库】ADV-350珠心算测验
试题 算法提高 珠心算测验 资源限制 时间限制:1.0s 内存限制:256.0MB python中的for循环和c中的不一样,不如c灵活,但是可以用while实现. 既: i=0 while i< ...
- noip2014 珠心算测验 (枚举)
P1911珠心算测验 Accepted 标签:NOIP普及组2014 描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练, 既能够开发智力,又能够为日常生活带来很多便利, ...
- vijos 、洛谷 —— 珠心算测验(java实现)
样例1 样例输入1 4 1 2 3 4 样例输出1 2 import java.util.*; P1911 / Vijos / 题库 /珠心算测验 public class Main {public ...
最新文章
- Struts权威著作
- struts2+hibernate-jpa+Spring+maven 整合(1)
- WEB初学者简介,web入门
- Amazon Elasticsearch Service 入门实践
- 【Leetcode | 02】二叉树、线性表目录
- 从达标到卓越 —— API 设计之道
- Win10 Nodejs搭建http-server注意点
- 网关 跨域_好文推荐:微服务网关实战—Spring Cloud Gateway
- spark开发demo
- 猜姓氏c语言题目,猜姓氏的谜语及答案
- IEEE年度薪酬报告发布!美国程序员薪资中位数7年来首次下降2.4万
- 使用matlab代码计算太阳高度角
- 大学生计算机PHP实训报告,大学生计算机实训心得体会
- 罚函数(内点罚函数和外点罚函数)
- jQuery Steps插入或移除步骤
- 第三方直播云平台(保利威和阿里云)直播集成demo
- 3-wireshark网络安全分析——ARP欺骗攻击
- ERROR metastore.ObjectStore: Version information found in metastore differs 3.1.2 from expected sche
- 什么是虚拟电厂(Virtual Power Plant, VPP)
- 软件著作权收费标准(最新)