您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

利用循环队列的思想进行加密解密(洛谷P1914题题解,Java语言描述)

星拱北辰 发布时间:2020-01-21 11:16:26 ,浏览量:0

前言

在我看来,理解循环队列对我们思考问题的帮助就是: 合理利用“%”的约束,将问题的“越界”重新弹回问题范围内。

本文就是一个例子,循环队列的思想为我快速秒杀本题提供了思路。

题目要求

P1914题目链接

在这里插入图片描述

分析

我们想要实现’z’后是’a’,就相当于让右越界的数值返回左边界内。 这就好比一个常见的特效:一条线从屏幕右侧穿出,又从左侧穿入。

这种思想在我看来和循环队列是很像的。 循环队列在一侧“填满”而“假溢出”之后,会在另一侧填装新的元素。

当然了,队列会有满的问题,但这种思想是很好的。

就好比说“弹球游戏”实现问题约束的方式是用模拟动量守恒的方式进行完全弹性碰撞后的反弹,强制不越界;而这里的解决方式是容许一侧越界后从另一侧回来。

这种思想实现,就是依靠“%”运算符实现的。

但是,这个问题里棘手的一点是:'a’并不是char=0的情况,所以我们应该先让当前char-‘a’,然后+偏移量,最后%26(因为有26个英文字母,这是界内范围),再+‘a’,就能得到我们所求的。

这就是本题所谓的加密解密咯。

AC代码(Java语言描述)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());
        char[] password_array = scanner.nextLine().toCharArray();
        for (int i = 0; i             
关注
打赏
1660750074
查看更多评论
0.0468s