蓝桥杯刷题4--数组和队列

目录:

1. 数组的应用–高精度

2. 队列


1. 数组的应用–高精度

        高精度算法就是大数的计算方法。超过64位的大数计算,Java和Python都能直接算。竞赛中常常用到很大的数组。强烈建议不要用动态分配,因为动态分配需要多写代码而且容易出错。定义为全局静态数组即可,而且不需要初始化为0,因为全局变量在编译时会自动初始化为全0注意全局变量和局部变量的初值。全局变量如果没有赋值,在编译时被自动初始化为0。在函数内部定义的局部变量,若需要初值为0,一定要初始化为0,否则可能为莫名其妙的值。

        Java计算大数,理论上可以计算“无限大”的数,只要不超内存。

【1】大数计算:输入两行表示两个整数。分别计算加、减、乘、除,分5行输出和、差、积、商、余数。

import java.math.BigInteger;
import java.util.Scanner; 
public class Main {     
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        BigInteger a,b;
        a=sc.nextBigInteger();   
        b=sc.nextBigInteger(); 
        System.out.println(a.add(b)); 
        System.out.println(a.subtract(b));  
        System.out.println(a.multiply(b)); 
        System.out.println(a.divide(b)); 
        System.out.println(a.mod(b));    //如果b是负数,这里可能报错
    }                     
}

2. 队列

队列中的数据存取方式是“先进先出”,只能往队尾插入数据、从队头移出数据。 Java用LinkedList实现基本队列Queue。常用操作有:

【2】机器翻译

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int capacity =scan.nextInt();
        int length = scan.nextInt();
        Queue<Integer> q = new LinkedList<>();
        int danci = 0;
        int chaxun = 0;
        for(int i =0;i<length;i++){
          danci = scan.nextInt();
          if(!q.contains(danci)){
            if(q.size()>=capacity){
              q.poll();
            }
            q.offer(danci);
            chaxun++;
          }
        }
        System.out.println(chaxun);
        scan.close();
    }
}

【3】餐厅排队

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int cishu = scan.nextInt();
        Deque<Integer> duiwu = new LinkedList<>();
        for(int i = 0;i<cishu;i++){
          int caozuo = scan.nextInt();
          if(caozuo==1){
            int bianhao = scan.nextInt();
            duiwu.offer(bianhao);
          }else if(caozuo==2){
            duiwu.poll();
          }else{
            System.out.print(duiwu.peek() + " ");
            System.out.println(duiwu.getLast());
          }
        }
        scan.close();
    }
}

【4】小桥的神秘礼物盒

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int cishu = scan.nextInt();
        Deque<Integer> duilie = new LinkedList<>();
        for(int i = 0;i<cishu;i++){
          int shuzi = scan.nextInt();
          if(shuzi == 1){
            int bianhao = scan.nextInt();
            duilie.offer(bianhao);
          }else if(shuzi == 2){
            if(duilie.size() == 0){
              System.out.println("lan");
            }else{
              duilie.poll();
            }
          }else if(shuzi == 3){
            if(duilie.size() == 0){
              System.out.println("qiao");
            }else{
              System.out.println(duilie.peek());
            }
          }else if(shuzi == 4){
            System.out.println(duilie.size());
          }
        }
        scan.close();
    }
}
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值