堆中的路径

来源:互联网 发布:哪类商品禁止在淘宝网 编辑:程序博客网 时间:2024/06/07 10:33

根据输入的数据建一个最小堆,然后根据要求输出堆的路径。

import java.util.Scanner;//建一个最小堆,输出给定的堆的路径public class The_Path_Of_Tree {static final int Max = 1001;static final int Min = -10001;static int H[] = new int[Max];static int size;//创建一个空堆public static void Create(){size = 0;H[0] = Min;}//堆中插入数据public static void Insert(int x){if(isFull(H)){int i;for(i = ++size; H[i/2] > x; i /= 2){H[i] = H[i/2];}H[i] = x;}else{return;}}//判断堆是否已满public static boolean isFull(int[] H){if(H.length == Max){return true;}return false;}public static void main(String[] args) {Scanner in = new Scanner(System.in);int N, M;N = in.nextInt();M = in.nextInt();Create();//插入数据建一个堆for (int i = 0; i < N; i++) {int num = in.nextInt();Insert(num);}for (int i = 0; i < M; i++) {int acc = in.nextInt();String str = " ";System.out.print(H[acc]);while(acc > 1){acc = acc / 2;System.out.print(str+H[acc]);}System.out.println();}}}

如果输入1000个数据会超时!(o´・ェ・`o)

0 0
原创粉丝点击