队列解密QQ号

队列解密QQ号

本篇博客主要是《啊哈!算法》的读书笔记,这里做一下记录。

  

问题场景:

  给定一串 QQ 号,631758924,从其中解密出真实的 QQ 号。

  解密规则:首先将第一个数删除,紧接着将第二个数放到这串数的末尾,再将第三个数删除并将第四个放到这串数的末尾,再将第五个数删除......,知道剩下最后一个数,将最后一个                             数删除。按照刚才删除的顺序,将这些删除的数连在一起就是真实的 QQ  号。

1、C语言

代码实现:

/*
 * 创建人:czc
 * 创建时间:2019/8/31
 * 创建用途:队列解密QQ号
 */

#include<stdio.h>
int main(){
    int q[102]={0,6,3,1,7,5,8,9,2,4},head,tail;

    //初始化队列
    // head指向队首,tail指向队尾的后一个位置
    head=1;
    tail=10;

    while(head<tail){
        //打印队首并将队首出队
        printf("%d ",q[head]);
        head++;

        //将新队首添加到队尾
        q[tail]=q[head];
        tail++;

        //再将队首出队
        head++;
    }
    return 0;
}

结果截图:

2、Java

代码实现:

/*
创建人:czc
创建时间:2019/8/31
创建用途:队列解密QQ号
 */
import java.util.Scanner;
import static java.lang.System.out;
public class Queue {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int[] q=new int[102];
        int n,head,tail;

        n=scanner.nextInt();
        //初始化队列
        for(int i=0;i<n;i++){
            q[i]=scanner.nextInt();
        }
        head=0;
        tail=9;

        while(head<tail){
            out.print(q[head]+" ");
            head++;

            q[tail]=q[head];
            tail++;

            head++;
        }
    }
}

结果截图:

吾生也有涯,而知也无涯。

猜你喜欢

转载自www.cnblogs.com/hzauxx/p/11437960.html