免费试用:最火的人工智能查询工具
     最强AI人工智能聊天工具
     对话机器人解答疑难问题
星外智问直连原始API接口(GPT-4o)
➡️未登录受限条数,请登陆使用完整服务>>>➡️
请输入您要问的问题:


查下百度  查下必应

以下是单个问题的回复:

问:根据给定的叶结点字符及其对应的权值创建哈夫曼树。 输入格式: 第一行为叶子结点的数目n(1<=n<=100)。第二行为一个字符串,包含n个字符,每个字符对应一个叶子结点,第三行为每个叶子结点的概率(即权值),要求根据各叶结点构造哈夫曼树。构造哈夫曼树的原则是先两个最小的,构造一个父结点,其中最小的结点为左孩子,次小的为右孩子,如果两个最小的叶结点相等,则取排在前一个位置的为左孩子。 输出格式: 哈夫曼树的权值,左孩子,右孩子及其对应的父亲,相邻数据之间用空格隔开; 输入样例: 5 abcde 15 25 15 20 25 输出样例: 15 0 0 6 25 0 0 7 15 0 0 6 20 0 0 7 25 0 0 8 30 1 3 8 45 4 2 9 55 5 6 9 100 7 8 0 用java语言编程实现题目要求。
GPT答: 7i24.cn
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static int n;
    static char[] chs;
    static int[] w, p, l, r;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        chs = new char[n];
        w = new int[n];
        p = new int[2 * n - 1];
        l = new int[2 * n - 1];
        r = new int[2 * n - 1];

        for (int i = 0; i < n; i++) {
            chs[i] = sc.next().charAt(0);
            w[i] = sc.nextInt();
            p[i] = -1;
            l[i] = -1;
            r[i] = -1;
        }

        for (int i=n;i<2*n-1;i++) {
            // 找到权值最小的两个结点
            int minIndexOne=-1,minIndexTwo=-1,minValueOne=Integer.MAX_VALUE,minValueTwo=Integer.MAX_VALUE;

            for(int j=0;j<i;j++){
                if(p[j]==-1){
                    if(w[j]<minValueOne){
                        minIndexTwo=minIndexOne; minValueTwo=minValueOne;
                        minIndexOne=j; minValueOne=w[j];
                    }else if(w[j]<minValueTwo){
                        minIndexTwo=j; minValueTwo=w[j];
                    }
                }
             }

             // 合并这两个结点,构造新的父节点
             w[i]=minValueOne+minValueTwo;p[minIndexOne]=i;p[minIndexTwo]=i;l[i]=minIndexOne;r[i]=minIndexTwo;

         }

         // 输出哈夫曼树
         for(int i=0;i<n;i++){
             System.out.print(w[i]+" ");
             print(l,r,i);
             System.out.println(p[p.length-2]);
         }
     }

     private static void print(int[] l,int[] r,int index){
         if(l[index]!=-1 && r[index]!=-1){ 
              System.out.print((l[index]+r[index])+" ");
              print(l,r,l[index]);
              print(l,r,r[index]);
          }else{
              System.out.print("0 "+index+" "+index+" ");
          }
      }
}
一星  二星  三星  四星  五星 

互联网非法外之地,请不要输入不良内容
 查下百度 查下必应 2024-12-19 21:19:30



chatGPT中国版--星外智问--8v6.CN
当前运行网址:ask.8v6.com
客服微信:xwgdd_com APP下载 怎么问 识别真假GPT4 使用GPT赚钱 退出登陆