Atenție! Aceasta este o versiune veche a paginii., scrisă la 2014-05-24 01:06:01.000.
Revizia anterioară   Revizia următoare  

Fișierul intrare/ieșire huffman.in, huffman.out Sursă Cerc informatică Vianu
Autor David Huffman Adăugată de avatar francu Cristian Frâncu francu
Timp de execuție pe test 0.7 sec Limită de memorie 2048 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip half
open book Poți vedea testele pentru această problemă accesând atașamentele .

Huffman (clasa a 11-a)

Să se implementeze compresia cu arbori Huffman canonici. Arhiva (fișierul comprimat) va avea următoarea structură:

  • primii trei octeți vor fi codurile ASCII ale caracterelor CHC
  • următorii 8 octeți vor conține lungimea fișierului original (necomprimat) în format big endian (octetul cel mai semnificativ primul)
  • următorii 256 de octeți vor conține lungimile codurilor Huffman ale fiecărui caracter: octetul i este lungimea codului Huffman a caracterului cu cod ASCII i
  • următorii octeți, pînă la finalul fișierului, conțin compresia Huffman propriu zisă
  • dacă numărul de biți ai compresiei nu este divizibil cu 8 atunci ultimul octet se completează la coadă cu biți zero

Pentru informații detaliate vedeți lecția compresia folosind arbori Huffman

Cerință

Dat un fișier să se comprime, sau, dat un fișier comprimat să se decomprime.

Date de intrare

Fișierul de intrare huffman.in este comprimat dacă începe cu caracterele CHC (Canonical Huffman Coding). El este necomprimat în caz contrar.

Date de ieșire

În fișierul de ieșire huffman.out se va scrie compresia fișierului huffman.in dacă acesta este necomprimat. În caz contrar se va scrie fișierul huffman.in decomprimat.

Restricții

  • 0 ≤ mărime fișier intrare ≤ 5000000

Exemplu

huffman.in huffman.out Explicație
abracadabra
 ————————————————————————————————————-
¦ SIG ¦ lungimea 8 octeti ¦ lungimi coduri 256 octeti ¦ codare 3 octeti ¦
 ——-+—————————-+——————————————-+————————-
¦ CHC ¦ \0\0\0\0\0\0\0\11 ¦ \0\0\0...\1\3\5\4...\2...\0 ¦ \105\231\52     ¦
 ————————————————————————————————————-

Explicație

Numărul de apariții al caracterelor este: a5 b2 c1 d1 r2.

Arborele Huffman construit este:

Arbore inițial
abcd ab

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 4 categorii