第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 查找整数

举报
红目香薰 发表于 2023/02/15 01:35:34 2023/02/15
【摘要】 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 查找整数 前言 基础练习 查找整数 C语言 C++语言 Java语言 Python语言 总结

 编辑

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 查找整数


目录

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 查找整数

前言

基础练习 查找整数

C语言

C++语言

Java语言

Python语言

总结




前言

        最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是dp分析能力了,所以就主要目标定在这里,最近的题目会很散,很多,基本上都是网罗全网的一些dp练习题进行二次训练,准备比赛的学生底子薄的先不建议看啊,当然,脑子快的例外,可以直接跳过之前的一切直接来看即可,只需要你在高中的时候数学成绩还可以那就没啥问题,其实,dp就是规律总结,我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家。


基础练习 查找整数

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9

样例输出

2

数据规模与约定

1 <= n <= 1000。

题解:这个题目说白了就是根据输入顺序进行遍历,我们只需要确定罗列的方式即可,如果放在数组里面遍历后直接看下角标,然后下角标+1输出即可,如果是字符串的话直接使用indexOf看看第一次出现的坐标就OK,当然这里也需要+1才能是正确的答案。

C语言

纯暴力处理就完事,C语言最快。

#include <stdio.h>
#define MAXN 10001
int n, a, ans;
int s[MAXN];
int main()
{
    int i;
    scanf("%d", &n);
    for (i = 0; i < n; ++i)
        scanf("%d", &s[i]);
    scanf("%d", &a);
    ans = -1;
    for (i = 0; i < n; ++i)
    {
        if (s[i] == a)
        {
            ans = i + 1;
            break;
        }
    }
    printf("%d", ans);
    return 0;
}

C++语言

其实这个输入方式还是比较麻烦的,但是查找起来直接就遍历后+1返回速度是很快的。

#include <iostream>
using namespace std;
const int MAXN = 10001;
int n, a, ans;
int s[MAXN];
int main()
{
    cin >> n;
    for (int i = 0; i < n; ++i)
        cin >> s[i];
    cin >> a;
    ans = -1;
    for (int i = 0; i < n; ++i)
    {
        if (s[i] == a)
        {
            ans = i + 1;
            break;
        }
    }
    cout << ans << endl;
    return 0;
}

Java语言

nextLine还是很好用的呢。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new  Scanner(System.in);
		int n=sc.nextInt();
		sc.nextLine();
		int[] num=new int[n];
		for(int i=0;i<n;i++){
			num[i]=sc.nextInt();
		}
		sc.nextLine();
		int x=sc.nextInt();
		int result=-1;
		for(int i=0;i<n;i++){
			if(num[i]==x){
				result=i+1;
				break;
			}
		}
		System.out.println(result);
	}

}

Python语言

无论怎么算还是需要遍历看看的,最终+1完成结果输出。

x = eval(input())
a = []
n = input().split(" ")
for i in range(0,x):
    a.append(int(n[i]))
y = eval(input())
try:
    z = a.index(y)
except:
    z = -2
print(z+1)

总结

这类小题一般蓝桥杯都会放1~2个的,这类题不能说是送分,很多孩子由于没有刷题所以解起来还是有一定难度的,但是对于努力刷题的孩子们来说就是很简单的了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。