博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
珠心算测验
阅读量:5873 次
发布时间:2019-06-19

本文共 880 字,大约阅读时间需要 2 分钟。

hot3.png

一、题目描述

        随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

二、格式

  1. 输入格式:

    输入共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。

    第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

  2. 输出格式

        输出共一行,包含一个整数,表示测验题答案。

三、思路

  1. 定义一个很大很大的int型数组 big[],定义计数器count
  2. 将输入的数存储到数组num[n]中
  3. 遍历数组num,并将num[i]的值作为数组big[]的下标,让big[num[i]]=1
  4. 将数组num[n]中的数两两相加,取相加的和sum作为数组big[]的下标,让big[sum]=0
  5. 遍历数组num,判断big[num[i]]的值,等于0,则count+1
  6. 此解的妙处在于借助一个很大的工具数组,将判断两个数的和是否等于集合中的另一个数转变成,对工具数组的下标判断:目标数组中的一个数 c 作为工具数组下标m,目标数组中另两个数a , b的和作为工具数组下标 n,如果工具数组中下标 m 对应的值和下标 n 对应的值相等,则证明 a+b = c

四、代码

import java.util.Scanner;public class Main {		public static void main(String[] args) {		// TODO Auto-generated method stub		int count =0;  //定义计数器		int big[] = new int[1000001];  //定义工具数组		//获取输入的数字,存入数组num[]		Scanner sc = new Scanner(System.in);		int n = sc.nextInt();		int num[] = new int[n];		for(int i =0;i

 

转载于:https://my.oschina.net/worriedfox/blog/1548678

你可能感兴趣的文章
4.单链表的创建和建立
查看>>
testng生成报告 testng-xslt 美化测试报告
查看>>
Android 好看的搜索界面,大赞Animation
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
[转]动态加载javascript
查看>>
【协议】5、gossip 协议
查看>>
基于配置文件的redis的主从复制
查看>>
hasura graphql 角色访问控制
查看>>
springmvc中controller内方法跳转forward?redirect?
查看>>
C#委托,事件理解入门 (译稿)转载
查看>>
容器的end()方法
查看>>
[转] Agile Software Development 敏捷软件开发
查看>>
HDU 1007 Quoit Design (最小点对,模板题)
查看>>
Windows Phone 7 自定义事件
查看>>
Objective-c 网址中带中文解决方法
查看>>
向函数传递数组的问题
查看>>
上班族的坐姿
查看>>
ubuntu 12.04 下面安装vmware workstation 8.0.4
查看>>
[原创]FineUI秘密花园(二十三) — 树控件概述
查看>>
【Java学习笔记】如何写一个简单的Web Service
查看>>