Run Length EncodingDescription
% l) v0 w& p. {/ N3 w6 N
7 ~* S( d+ x! G5 a: x" O: ^" h" v% P, SYour task is to write a program that performs a ** form of run-length encoding, as described by the rules below. 6 ?& g* ~, t# Y
7 _- x$ w. K; f5 \, Z7 dAny 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.
: m4 Z" o$ w6 k: ~4 ]: z
2 V. r3 Y( m/ U! d. l7 iAny 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
- q& ~$ f% w5 ?! m8 Ksequence, it is escaped with a 1, thus two 1 characters are output.
* C- j* O" M/ ^+ C5 }' r% T& {& Z3 e D% f
Input 1 g7 O: o# {& Q$ v, A+ e0 v, C. x
6 Z4 u7 y& r9 _, ~ O( {5 OThe 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.
# }4 `! x T* `$ K/ j6 C' V# x/ e' U4 m. x7 ~' i. w
Output / K) w- S* a7 `
, [' R5 t* G0 Q. C" k! w9 R) N1 gEach 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.
& { O3 n7 @: w2 {* j! A! P5 g1 S1 q4 q1 s; d! h; q, k
输入样例
9 `2 G9 a; K, B; p6 P$ GAAAAAABCCCC
0 q, F" x2 f' O* J1 Y12344
) E' u0 e) N; ?* z1 z- V+ ~8 U : E9 I* n+ _# Z& C
# T9 b8 ~$ M* L6 v输出样例
5 z/ K/ [7 ~8 x6 h3 Z# m6A1B14C
% P& \7 J: E6 R1 o0 X- n% l11123124
2 l/ J7 T2 m$ [' N' `. P % g0 z$ `$ o& d6 q
# U$ L- l# s. @0 T+ x6 k% z! D' t
Source$ o! ~- W' K: ^
! @7 Q3 }: O: J, A5 A$ [6 ]4 dUlm Local 2004( d p' g( y+ L9 R- {
. i- b1 W1 z' _8 h( J
example1:6 X( v8 Z4 y6 V7 _2 n. w( }
#include<stdio.h>
. \" @7 j" ~4 l n% D#include<string.h>9 ?7 E5 b1 k- b' K' g% G5 x f% l7 A
void main()% o! y. L7 V! n' t: A2 b1 h* b9 F
{ int i,j,k,n;8 B& Z3 i x0 p: z
char a[50];% r5 }0 w1 q# u2 w9 [7 q, Q$ D
gets(a);" @& B, O0 P- P, g' }
n=strlen(a);
/ k0 K6 e9 E( \
: N* }- s2 `0 P7 ]% B for(i=0;i<n-1; )( o, ~, W1 V4 W+ F8 ?" x0 d" D
if(a==a[i+1])% v. v% N; l. J* m. o9 x; b7 R
{ for(j=i+1;a[j]==a[j+1];j++);
1 S! m: Q' y w! z$ o, v printf("%d%c",j-i+1,a);5 a: m. ~1 Y. G t$ S J" N8 q6 b- R7 d
i=j+1;- A& o. \% T/ Y& x+ Z. O, _. m8 E, B
}' F% ~' v6 h t1 Z4 r0 X1 T
else
2 Q. A3 k. c2 [& f/ m) B" j { if(a==1)
+ ?1 \9 W: `$ g; H { printf("11");& M; o( m4 u2 i. i9 C. c
i++; p# x9 h! Z5 `+ h: |" t
} e2 \# I$ S, `4 a5 k
else/ c& U8 _1 W4 U! K# ~* G
{ for(j=i+1;a[j]!=a[j+1];j++);0 P5 w6 I/ S# G1 i; |+ E1 B* ?9 @
printf("1");. D; h w0 ?' k9 {+ Q
if(j==n+1)
7 q- Q+ X2 E [5 u5 S4 i9 g. s, _5 m4 w j--;9 z* j6 ^% G3 u: b6 i* ^7 C
for(k=i;k<j;k++)
# r- ~/ i1 J( E printf("%c",a[k]);3 }" N: g. D# P9 n0 j
printf("1");
9 g; h- q0 J0 c; T- s i=j;8 `1 i5 k! V' T, \% P! o
}
; u+ S' `9 I9 K1 S+ }- V3 i3 v }
# y' \5 i4 p, [+ o: _ if(n==1)
9 V$ ]# P. G$ [- I if(a[0]=='1')
7 S7 R9 k7 z; b7 W$ }/ b- d& T! W printf("11");
/ Q [% e7 _+ G) v else* \( q) k! a. U a
printf("1%c1",a[0]);
+ Y( D& K9 L6 ^# g printf("\n");
! l. m X# D3 \4 E- }" c }' ?' U& h& z0 @6 u5 |; Z( z
评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
3 J+ r3 K, j; a* G- m#include<string.h>7 e# m o: t- Z3 H( {4 h
void main()
# m8 p5 f: Y% u* B& _+ [! |{ int i,j,k,n;
; ~. [* r D, r0 m char a[50];- @& d. e& J& m5 Q' n* ^1 |
gets(a);" d* h# a. ^ X+ I' b, E
n=strlen(a);
$ a! b4 w Q5 ]0 j5 Q8 J: V' c
for(i=0;i<n-1; )
5 H( L1 [8 U8 V# S; ^ Z8 Z if(a==a[i+1]): d* y% B" j2 o
{ for(j=i+1;a[j]==a[j+1];j++);
- W/ O% [$ n! z$ G- o% Y printf("%d%c",j-i+1,a);0 ?$ ~6 T" ]8 Y/ L0 l* k
i=j+1;
" ^4 @. D: u( X3 q* i: |4 s }
+ u& @ U6 j$ ?. W8 { _ else2 h: G" S/ J r: z% N
{ if(a==1)6 w) ~& W! m2 X, p) ?1 `) H
{ printf("11");
6 U# j/ m8 z0 y. i c. p i++;9 ^$ ~6 U2 q' t N
}: l [) Z3 ^. u: r w2 r: u* e9 W, l
else6 a5 }/ J; _7 J% t1 c0 Z- v1 W
{ for(j=i+1;a[j]!=a[j+1];j++);
# f" b4 o5 _( b4 b. y: s: e printf("1");4 P3 I" O/ I5 {: O) s; Y b
if(j==n+1)+ o3 j0 R, C1 i. ^( x
j--;
. S1 ~6 N8 \- c) c. \$ ~ for(k=i;k<j;k++)
3 R% u2 ~8 ^ H& t8 I6 V printf("%c",a[k]);
+ o3 j }6 C, [& c, [ printf("1");
: k( L# J5 U- s2 J6 N. T i=j;3 L5 Q' _' `5 S0 v6 P- A3 I$ p
}, R2 ~/ e: C4 p( C6 ~$ |! k ]
}0 H a# R6 W3 d$ ? D' s( Q" V
if(n==1)# z, l! w# c) G/ @6 f8 q
if(a[0]=='1'). F0 Y, A3 M+ }1 w2 P
printf("11");
0 X/ I% N4 q3 x: Z! J else8 S. L3 L! |; G% j. f+ c
printf("1%c1",a[0]);
" I) P$ b: b. l) n, R printf("\n");- D* K0 }& i2 R# |0 b: K
} example2:#include<stdio.h>
8 `# \: n, ?/ g+ i#include<string.h>3 C$ }9 a x5 u
void main()
U9 Y" K) c4 o q( |: V. N. I1 }{ int i,j,k,n;
* P' _/ f' E9 q$ p2 U0 T7 M* I4 s char a[50];, R$ m% _, M7 j- q0 R! |
gets(a);
9 z: Z; {+ E* t, `! q1 O- ] n=strlen(a);% ^6 s& N+ R, y" \% l4 I
( u+ l5 Z/ {# o& R* P& Y5 X6 } for(i=0;i<n-1; )
% v) \ u3 t! o7 \( E" Y" J if(a==a[i+1])
/ r- S1 P+ B3 A# @5 w, b. y8 @ { for(j=i+1;a[j]==a[j+1];j++);
6 G4 _1 m, o) z printf("%d%c",j-i+1,a);' ` r) e+ N$ |6 D$ X
i=j+1;
8 I6 E6 D/ A! ~1 b- Q }- w, |+ v: U' L
else
+ J- d6 q& z S- D- T: x- u9 k# _ { if(a==1)) f& c2 l) ~$ h8 Z J: L
{ printf("11");# m* K: Y- S! M7 x# m1 M7 R
i++;- Z! k9 A8 O" P; S4 L, L( C5 r
}8 t j- E: \* m( ]
else1 C3 \7 x" }( J L8 V3 `/ i- i
{ for(j=i+1;a[j]!=a[j+1];j++);/ D Z& n& u$ |
printf("1");
) k9 Q0 |$ Q, d$ Y, I0 o; D/ T* Q if(j==n+1). Y$ ^# f e' L( J7 B( G
j--;
; ]! e& L/ l' [5 X: G0 @ for(k=i;k<j;k++)
3 A3 R8 l% z- l$ I) f3 \ printf("%c",a[k]);
. q$ j% C- Y8 v4 L8 F printf("1");
' s' s$ o' E" f. [2 C: N i=j;: U! U0 ?: N; \( a. R
}
2 N; h( p; P2 ]3 z, d$ E! w0 {, r }
8 r$ f- [8 T! H if(n==1)
, M2 H+ f, {% d9 Q if(a[0]=='1')# c3 g# I; ~, Q4 _
printf("11");6 s5 w B t" a
else1 I+ }- H6 X. |) [# f5 P9 c
printf("1%c1",a[0]);
3 v. i! C# r1 N) Y& a printf("\n");
+ i8 Y8 T$ m: k% @' b( Y& b }8 ]: B+ [: C' z3 o5 }
example3:#include<stdio.h>
% B" [! b" W) j9 ?0 [5 d( _! A6 F#include<string.h>
) O9 D/ Z5 y- ?) F% Evoid main()
" h6 J' T% r$ @% H& Y" J7 U{ int i,j,k,n;
& e( l7 U0 T- x; K0 S5 d/ `! [! y' b: ? char a[50];
0 v" x" R- F. N' X gets(a);
+ }8 C1 v2 l: c1 g6 @/ D+ P n=strlen(a);, x4 c0 V) B: ?; z4 E$ g
: p! s+ G# F7 H6 ~ for(i=0;i<n-1; )# [- \2 {; r# I9 j# D A
if(a==a[i+1])- V9 q% W( D# Z
{ for(j=i+1;a[j]==a[j+1];j++);& C) g; {! b4 `
printf("%d%c",j-i+1,a);; B' |# e5 r' o5 i% i) G- U9 D
i=j+1;
( u8 |. d, n" W; k( P# t }
3 k4 |# f6 G6 q5 }( e9 f/ E else4 Y% `# @# V5 I" q, O: K. P8 K( u
{ if(a==1)
1 ?& }6 ~3 N/ e8 N { printf("11");; A$ Z8 F z1 G# R2 y
i++;4 t7 e3 E+ f/ b2 N
}
6 o/ o+ r" g; G! o2 ~9 k, N else
1 d3 M! L0 J" S j8 i { for(j=i+1;a[j]!=a[j+1];j++);# p8 k: W2 S( s9 i0 ~6 N; B
printf("1");6 _9 [6 h0 O& q/ i* i
if(j==n+1)
( l' S7 ^( H4 h; T) `9 }' B7 d0 C j--;
8 b6 T( [) [; S for(k=i;k<j;k++)) o0 V, O/ v; m. {. s+ p* `8 c& V+ ?
printf("%c",a[k]);
- [' v: V, S5 ? printf("1");" J* e8 N8 P& b+ ?, H) c5 b- ~
i=j;! k2 y. s) J2 Q1 B# _3 W) s) j
}
; J) J, [% J* U( @ }) a: ~; G: e3 a. y, Q# _2 q
if(n==1)9 @& q& g, u/ W& Q- |. e) Z0 N
if(a[0]=='1')/ V1 y. }, p3 Q/ E6 V
printf("11");
0 G2 e" m; Q5 {0 T! Y* X else% M( q9 _, W6 b0 ?$ N8 w
printf("1%c1",a[0]);7 K( }) o, k* R& ?) ?: v+ F+ Z/ j; ?
printf("\n");$ |1 s9 h5 a7 h
}
6 D, C+ \% L* O8 _ 来源:编程爱好者acm题库 |