sgsgsgsgsg___ 2021-04-19 08:53 采纳率: 33.3%
浏览 33

请教各位大神我的代码错在哪里?

用哈弗曼树对字符串(可能包括空格)编码,返回压缩后占用的最小位数,OJ显示答案错误。

自己尝试了一些例子,在字符串长度不是非常长的时候,输出数值是没有问题的。然后当字符串长度为好几百时会有问题。

代码如下,请教各位我的代码错在哪里,是哪里的思路出现了问题?

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string input;
    getline(cin, input);
    int length = (int)input.length();
    int freq[256];
    for (int i = 0; i < 256; i++) freq[i] = 0;
    for (int i = 0; i < length; i++) freq[int(input[i]) + 128]++;
    int a[256];
    for (int i = 0; i < 256; i++) a[i] = 0;
    int n=0;
    for(int i=0;i<256;i++){
        if(freq[i]!=0){
        a[n]=freq[i];
        n++;
        }
    }
    int temp;
    for(int i=1; i<=n-1; i++)                 
    {
        for(int j=1;j<=n-i;j++)
        {
            if(a[j-1]>a[j])
            {temp=a[j-1];
             a[j-1]=a[j];
             a[j]=temp;
            }
        }
    }
    int B=0;
    int sum=0;
    while(n>1){
        a[0]=a[0]+a[1];
        a[1]=257;
        sum=sum+a[0];
        for(int i=1; i<=n-1; i++){
            for(int j=1;j<=n-i;j++){
                if(a[j-1]>a[j]){
                    temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;
                }
            }
        }
        n--;
    }
    cout<<sum;
    return 0;
}

  • 写回答

6条回答 默认 最新

  • 关注

    运行有没有报错呀,有报错的话,把错误信息发出来看看。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题