±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 431  |  »Ø¸´: 2

-Ë­Ö÷³Á¸¡

гæ (СÓÐÃûÆø)

[ÇóÖú] ¹þ·òÂüÊ÷¾À´í£¡¼± ÄÄÀïÔËÐгöÎÊÌâ¡£¡£¡£

¹þ·òÂüÊ÷¾À´í£¡¼± ÄÄÀïÔËÐгöÎÊÌâ¡£¡£¡£
CODE:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAX 100
typedef struct
{
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
    int small1,small2;
    s1=s2=0;small1=small2=MAX;
for(int i=1;i<=n;++i)
{
  if(HT[i].parent==0)
  {
   if(HT[i].weight<small1)
   {
    small2=small1;
    small1=HT[i].weight;
    s2=s1; s1=i;
   }
   else
    if(HT[i].weight<small2)
    {
     small2=HT[i].weight;
     s2=i;
    }
  }
}
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int*w,int n)
{
int m,s1,s2,i,c,start,f;
char *cd;
HuffmanTree p;
if(n<=1)
  return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(p=HT+1,i=1;i<=n;++i,++p,++w)
{
  p->weight=*w;
  p->lchild=0;
  p->parent=0;
  p->rchild=0;
}
for(;i<=m;++i,++p)
{
  p->weight=0;
  p->lchild=0;
  p->parent=0;
  p->rchild=0;
}
for(i=n+1;i<=m;++i)
{
  Select(HT,i-1,s1,s2);
  printf("%d  %d\n",s1,s2);
  HT[s1].parent=i;
  HT[s2].parent=i;
  HT[i].lchild=s1;
  HT[i].rchild=s2;
  HT[i].weight=HT[s1].weight+HT[s2].weight;
}
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;++i)
{
  start=n-1;
  for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
  {
   if(HT[f].lchild==c)
    cd[--start]='0';
   else
    cd[--start]='1';
   HC[i]=(char*)malloc((n-start)*sizeof(char));
   strcpy(HC[i],&cd[start]);
  }
  free(cd);
}
}
void PrintCode(HuffmanCode HC,int n,char *ch)
{
for(int i=1;i<=n;i++)
{
  printf("×Ö·û%cµÄ»ô·òÂü±àÂ룺",ch[i-1]);
  printf("%s\n",HC[i]);
}
}
void main()
{
HuffmanTree HT;
HuffmanCode HC;
int w[MAX],i,n;
char ch[MAX];
printf("ÇëÊäÈë×Ö·û¸öÊý:\n");
scanf("%d",&n);
printf("ÇëÊäÈë×Ö·û:\n");
for(i=0;i<n;i++)
  scanf("%c",&ch[i]);
printf("ÇëÊäÈë×Ö·û¶ÔӦȨֵ:\n");
for(i=0;i<n;i++)
  scanf("%d",&w[i]);
HuffmanCoding(HT,HC,w,n);
PrintCode(HC,n,ch);
}

[ Last edited by jjdg on 2013-5-11 at 01:18 ]
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

shyboylpf

гæ (³õÈëÎÄ̳)

jjdg: ±à¼­ÄÚÈÝ 2013-05-11 01:19
ÄÚÈÝÒÑɾ³ý
2Â¥2013-05-09 20:18:44
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

-Ë­Ö÷³Á¸¡

гæ (СÓÐÃûÆø)

ÒýÓûØÌû:
2Â¥: Originally posted by shyboylpf at 2013-05-09 20:18:44
Ϊ뻹ÄܼӱíÇé¡£¡£¡£

²»Êǵİ¡£¬Ã÷Ã÷ÊÇÀ¨ºÅ£¬ÏµÍ³×Ô¶¯»»³É±íÇé
3Â¥2013-05-10 12:15:48
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ -Ë­Ö÷³Á¸¡ µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 265Çóµ÷¼Á +9 ÁºÁºÐ£Ð£ 2026-04-01 9/450 2026-04-03 01:25 by С±ý¸Éѧ½ã0
[¿¼ÑÐ] Ò»Ö¾Ô¸211£¬335·Ö£¬0856£¬Çóµ÷¼ÁԺУºÍµ¼Ê¦ +15 Çã____Ïô 2026-03-27 16/800 2026-04-02 22:50 by JourneyLucky
[¿¼ÑÐ] 309·Ö085801Çóµ÷¼Á +10 ѧԱGtwj7W 2026-03-31 10/500 2026-04-02 22:42 by yunlongyang
[¿¼ÑÐ] 338Çóµ÷¼Á£¬Ò»Ö¾Ô¸ÄÜÔ´¶¯Á¦£¬ÍâÓïÊÇÈÕÓï203 +3 zzz£¬£¬r 2026-04-02 3/150 2026-04-02 22:23 by ZXlzxl0425
[»ù½ðÉêÇë] ÇëÎʹ²Í¬Í¨Ñ¶ºÍ¹²Í¬Ò»×÷µÄÈϿɶÈÎÊÌâ 10+4 psa1234 2026-04-01 9/450 2026-04-02 22:03 by god_tian
[¿¼ÑÐ] 085600µ÷¼Á +3 1amJJ 2026-04-02 3/150 2026-04-02 22:00 by ¿ÆÑÐСר¼Ò
[¿¼ÑÐ] 264·Ö£¬ÇóÈÎÒ⹤¿Æµ÷¼Á +4 zzlqwq 2026-03-29 5/250 2026-04-02 17:17 by ºÎÔø¼¸ºÎ
[¿¼ÑÐ] Àíѧ07»¯Ñ§ 303Çóµ÷¼Á +16 î£08 2026-03-27 17/850 2026-04-02 13:29 by Æß¶È²»ÐÅÈÎ
[¿¼ÑÐ] 327Çóµ÷¼Á +9 ¼³Òàê» 2026-03-29 9/450 2026-04-02 11:44 by ÔËÆøyunqi
[¿¼ÑÐ] 292Çóµ÷¼Á +17 ľ³æer12138 2026-04-01 17/850 2026-04-01 21:37 by Æß¶È²»ÐÅÈÎ
[¿¼ÑÐ] 320·Ö£¬²ÄÁÏÓ뻯¹¤×¨Òµ£¬Çóµ÷¼Á +14 Ò»¶¨Éϰ¶aaa 2026-03-27 18/900 2026-04-01 20:10 by »ý¼«µ÷¼ÁµÄСѧÉ
[¿¼ÑÐ] 085600 Ò»Ö¾Ô¸9 ×Ü·Ö351 Çóµ÷¼ÁѧУ +7 czhcz 2026-03-31 9/450 2026-04-01 19:24 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 0710ÉúÎïѧ¿¼Ñе÷¼Á +3 Àî¶àÃ×lee. 2026-03-27 4/200 2026-04-01 16:21 by zzchen2000
[¿¼ÑÐ] µ÷¼Á +5 ºÃºÃ¶ÁÊé¡£ 2026-03-28 7/350 2026-04-01 15:32 by ÍõÁÁ_´óÁ¬Ò½¿Æ´ó
[¿¼ÑÐ] Ò»Ö¾Ô¸±±½»²ÄÁϹ¤³Ì×Ü·Ö358 +5 cs0106 2026-04-01 7/350 2026-04-01 11:45 by wangjy2002
[¿¼ÑÐ] 322Çóµ÷¼Á +8 ÈýË®sss 2026-04-01 8/400 2026-04-01 10:19 by ÌÆãå¶ù
[¿¼ÑÐ] Ò»Ö¾Ô¸ÎäÀí²ÄÁϹ¤³Ì302µ÷¼Á»·»¯»ò»¯¹¤ +15 Doleres 2026-03-31 16/800 2026-04-01 09:49 by lfj11
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©¿Æ¼¼´óѧ085601²ÄÁϹ¤³ÌÓ¢Ò»Êý¶þ³õÊÔ×Ü·Ö335Çóµ÷¼Á +5 Ë«ÂíβƦÀϰå2 2026-03-31 5/250 2026-04-01 09:04 by oooqiao
[¿¼ÑÐ] 266Çóµ÷¼Á +3 ÍÛºôºßºôºß 2026-03-29 3/150 2026-03-31 10:06 by cal0306
[¿¼ÑÐ] 0703»¯Ñ§321·ÖÇóµ÷¼Á +10 Èýdd. 2026-03-30 11/550 2026-03-30 19:24 by markhwc
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û