Run Length EncodingDescription
1 u1 d* b/ X0 l }# x2 ]7 D3 B w y/ r
Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below.
. l( E* [; C8 h( u0 U. j* N7 Q" \7 R
3 L0 b, u$ `; s* f0 `Any sequence of between 2 to 9 identical characters is encoded by two characters. The first character is the length of the sequence, represented by one of the characters 2 through 9. The second character is the value of the repeated character. A sequence of more than 9 identical characters is dealt with by first encoding 9 characters, then the remaining ones. 7 J3 \! M: @& K* I9 O4 S# m
- ^8 V: _, y0 s+ s) M3 v' J
Any sequence of characters that does not contain consecutive repetitions of any characters is represented by a 1 character followed by the sequence of characters, terminated with another 1. If a 1 appears as part of the 5 \6 ]' ]. s, r! J3 E/ t
sequence, it is escaped with a 1, thus two 1 characters are output.
/ h9 p: i0 U- D/ h5 \$ h3 E) M, D( _7 F: E( M3 j* L
Input . `8 D* X: ^ O4 M
" C( m: \: `( b- @5 C3 ?
The input consists of letters (both upper- and lower-case), digits, spaces, and punctuation. Every line is terminated with a newline character and no other characters appear in the input. 6 T8 |- S) K: `% O9 ^% t; o
/ ], |3 T* C0 Q0 O5 ?
Output
9 U" [# T3 T8 j. q1 M7 ]
. z) E% ?# h" @9 T- n0 y [8 REach line in the input is encoded separately as described above. The newline at the end of each line is not encoded, but is passed directly to the output. ) L T5 {2 ^& a6 S4 n+ o9 f M- y4 ]7 g
5 k, l7 A% L1 Z) \+ ?+ `/ ^% v" ]输入样例 , _4 W( I, A" T
AAAAAABCCCC+ O5 S9 p9 p- ^: n
123446 t+ S" y5 z2 u2 R
1 z% H3 b+ X# v
; V* x1 Q# x; {: ?1 c* k' F
输出样例 2 i7 F" a3 M! |( Z! [+ K& i* u
6A1B14C
+ M0 x1 U$ Y1 j' A ]- S11123124! K% b) G/ u8 `+ }8 {
& }5 N3 V/ i6 O7 j* z
; U2 a. r5 A& e; \3 P- XSource3 Z! w* @2 N6 ^% ^
& }) ^- h$ k/ r0 S7 U( d- OUlm Local 20040 x; f* K* \, ?# s
8 J/ ^$ X% |# ~- R" fexample1:) d- n2 Y) c- U' l0 U
#include<stdio.h>2 b, W4 _) W3 E/ B) P4 q! ^+ q3 W6 A
#include<string.h>
0 @6 i: k# H4 ]& \- L# j0 m: Hvoid main()& G4 h, F3 Y8 y b( s
{ int i,j,k,n;
7 S9 m/ N! O7 {, Y" d char a[50];- U- H+ g- @9 j. u' b
gets(a);* R4 ]8 |' c3 b [
n=strlen(a);
% M5 ]4 v c) b0 h, u6 }6 N# p6 u# N% r
for(i=0;i<n-1; )3 B" c8 ^( s7 Z- |4 y, A5 p
if(a==a[i+1])3 W w3 D/ O, V
{ for(j=i+1;a[j]==a[j+1];j++);
" k& S d. K3 b printf("%d%c",j-i+1,a);8 _# d; M: a5 j$ C7 k
i=j+1;9 s0 {/ F& D r& z B
}
/ G* o( x3 W0 H" R6 n9 K4 J6 U- T else
8 p( A5 w; N s9 R& Y7 Q6 Q( m { if(a==1)/ w2 C4 m) ~! g& x: _; K
{ printf("11");$ H3 a2 |4 v- z% }
i++;) e1 T- Z- _; o6 `3 G" t6 |
}) e) }0 d' I$ }0 u) b# P
else
2 t* j! _& V' M+ f$ F { for(j=i+1;a[j]!=a[j+1];j++);$ p! p; T7 Y: i3 e
printf("1");* v+ B1 b1 P! j6 @+ A
if(j==n+1)6 W9 w& v; q4 [/ B$ D# B
j--;
8 e F0 M! K3 c5 P( o for(k=i;k<j;k++)2 v5 L9 g5 j: }. T+ `( {+ T
printf("%c",a[k]);
* d3 X+ H. ~! h3 i' N" b& Z printf("1");
- _' L7 k& O+ Y7 W4 ] i=j;
& \$ k" ^! X) y* W/ I* D }
: Z' m, q3 t3 k' v% E }1 S/ Y" W) @) n( r2 R, O3 o6 r
if(n==1)
7 u0 o; o/ L9 j$ x. R' b$ m if(a[0]=='1')
; M# K$ E) T2 q printf("11");
6 O1 S% V/ u' o3 c7 P7 t; c# V else
& I: c- t. h- W2 w# _7 y; X4 A# L0 c printf("1%c1",a[0]);
& l4 |9 w" v0 c! G; S& p printf("\n");
. }4 t5 p* v5 N6 w }& V, J: t$ f$ \! r/ H3 K2 [
评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>) N- a. w5 k# m7 @! W$ S7 q- ?/ A5 x
#include<string.h>' z, C/ |# D4 p% K( p
void main()
: t! l7 _% }1 S4 E' I0 m5 D{ int i,j,k,n;" G5 ]8 I" Q9 ~+ t H) p7 `8 B5 z: b
char a[50];: [' x" B" x% E; v1 j1 j
gets(a);, V N T6 z2 p. X
n=strlen(a);; C- r+ a' R8 Z
+ M& z* b2 p/ A7 w
for(i=0;i<n-1; )
6 ^1 f" X+ q' I7 r- A; y2 E if(a==a[i+1])
w8 V5 U! |% p# q* o, _3 Y { for(j=i+1;a[j]==a[j+1];j++);
' V/ W/ U/ i! p' e! t. N+ [) h1 f printf("%d%c",j-i+1,a);6 ` E2 N# G# F X: s! b
i=j+1;
9 q/ U1 ?9 m# ~! z/ { }4 Q, _$ i2 H( j. {
else Q6 q/ z# A' b8 D: V6 g: {; V
{ if(a==1)" s+ A1 O! G, O' r/ ^" g
{ printf("11");
8 m- w- L! d. O: M& q# E# L- C i++;
7 D% b, W2 c( R }
) g, m6 _( z+ U; L3 i else
7 z% o" d1 i6 R' V7 ?* k, A# D { for(j=i+1;a[j]!=a[j+1];j++);9 B4 l1 `& y# B- X$ Q6 _
printf("1");
" v! \1 C. n% u' g! g if(j==n+1): o7 q# g' F7 J7 h! i, Z5 W3 l5 b8 y
j--;+ I. R4 g( o. p+ E
for(k=i;k<j;k++)- O6 _7 T2 Z( T j% F
printf("%c",a[k]);2 w# s) q N8 M/ J# g
printf("1");3 o2 L! g; u! ?, N* a
i=j;& p0 o1 b) W3 s
}" X6 P% Y9 q$ r3 o: t
}& r0 a" {, `4 j5 F0 [
if(n==1) s7 y! s& W m
if(a[0]=='1')9 n# g' Y6 T& W7 i! H3 C
printf("11");5 Q! R7 r& c3 t7 p: Y
else0 [7 ^7 K+ K' \) h" [) k
printf("1%c1",a[0]);1 c' U# h6 @) E' y
printf("\n");
! k; j- [. D6 v } example2:#include<stdio.h>
% Z' i$ \3 K' W' `#include<string.h>
I; A2 j9 i5 b( Gvoid main()
% R" o$ e$ p; J2 K. i- `' n7 H/ R: V{ int i,j,k,n;
" _ \3 ], J- G' k7 _6 `) A char a[50];. B: |/ g$ s# A9 g0 v1 r5 n+ T
gets(a);$ r/ Y \8 x7 X6 @! {
n=strlen(a);: ~ O( \" m c0 Z! Z
( X3 y/ _3 `- F7 ~ for(i=0;i<n-1; )1 D& B5 U/ @, r4 \% n7 q
if(a==a[i+1])- V, ^' F! U' W3 K! D4 c* |$ F* {) k
{ for(j=i+1;a[j]==a[j+1];j++);
; `- u9 S( ` Z7 ^# X printf("%d%c",j-i+1,a);
1 W, Y( _# O0 ]/ V i=j+1;
4 r3 C+ A) L, O& k }# \6 L7 B- x, q) |
else
' I x$ l) R- l5 m9 c0 _$ U { if(a==1)- A" {* E( K' D: k$ U
{ printf("11");$ Z$ L# R* Q6 h" n0 ]& E1 |5 } R
i++;
q" ?' |: z- n: g }+ L2 i. I8 N3 A) {
else
4 y5 N+ F1 h T" @3 s7 B { for(j=i+1;a[j]!=a[j+1];j++);
, d) _1 W. X5 d3 E# q* r1 a8 z- T printf("1");
/ U: Q4 L2 s$ |! y; L7 p if(j==n+1)4 W6 o( F! x. G9 V, H2 X
j--;1 a$ I# Z% J% j0 i
for(k=i;k<j;k++)9 {( `- d/ W' k+ W$ u7 a4 |/ {6 k% y
printf("%c",a[k]);
+ K2 A+ {' p% h# { printf("1");
7 h! K- f+ M" _ i=j;5 c3 F. Z1 e) P: P4 z7 Z; u- B Y4 g
}
' x" H# g! D( [! m. L8 i }
; i# s* p" z8 }, { if(n==1)% C" w" G: i, O; \4 Q& S
if(a[0]=='1')
. }% ]; p0 j$ E# I- J9 t6 k printf("11");
3 [* v: [' u; O% U else8 E* `7 W9 [( K1 f* O
printf("1%c1",a[0]);% _# ~# y& @+ E4 b
printf("\n");6 h% G% @5 E9 X* e
}0 _) p. ~& g$ X
example3:#include<stdio.h>
$ H5 o& Q5 ]% N9 R7 ]% K#include<string.h>
- n5 {+ K5 u: V& Z8 k5 xvoid main()
1 b5 i4 k9 l U/ I Z: m) J1 Q{ int i,j,k,n;
& J$ s# U, y& z k4 R6 P% b6 i char a[50];' Q! a3 d& O( C
gets(a);
" c" V7 e/ W! w& P2 D; m n=strlen(a);
" I# m( Y" K2 R! x1 H2 T7 g5 O7 Z
for(i=0;i<n-1; ): \, K& D- s0 I8 g# P1 F
if(a==a[i+1])+ _2 p0 c, e4 Z7 O# O
{ for(j=i+1;a[j]==a[j+1];j++);- J' b- G: v; D0 g: F U N
printf("%d%c",j-i+1,a);& ~! w G" ?$ F4 f! F2 G( O5 ]
i=j+1;0 |; j7 c6 p0 s! G
}3 Z; C" |; n; a! Q! p
else
( ]( Q @1 C) R' z { if(a==1)
% o! U4 X: }: V5 i5 o { printf("11");
: l& \: b1 J3 I6 ?' C i++;, a# X! n0 N9 r c, q
}
. ~& Y/ r% t# w% Y. B' B5 u4 ~/ J else0 [/ ^1 t: ]! a" {& k9 ^
{ for(j=i+1;a[j]!=a[j+1];j++);2 P: Y! K% |, g( v: K
printf("1");
: p' x9 l% r( u% _9 P- Q if(j==n+1): i6 @- d/ ?, ~" [7 D! Z7 z2 d
j--; K5 k% w, X& S7 h U {* X4 N
for(k=i;k<j;k++)
1 c6 S, n, Y$ v3 f2 E' z, o printf("%c",a[k]);
1 p6 A* E# q* [ printf("1");5 ?8 c: o5 ]& Q4 v- [6 g
i=j;
) ?( _4 q' c' p- @) [ }
6 H1 b4 z+ {' G9 }1 i$ b }# \+ j3 u- w/ z, W; c
if(n==1). u+ g: k& K# M& S2 M
if(a[0]=='1')
; r# ?" x: W( z: X" P) F- L3 | Y printf("11");
/ S+ `" q8 P: U n else
( z. _7 ^; q! @& R8 K printf("1%c1",a[0]);
( T3 @$ q" q7 N printf("\n");" B& y2 J2 c6 O( r0 S
}5 q1 K( t) r; P/ H* H
来源:编程爱好者acm题库 |