Run Length EncodingDescription 8 w8 N) }5 L% W' P3 t
5 O% G& J% F: [1 O) IYour task is to write a program that performs a ** form of run-length encoding, as described by the rules below. 0 X4 e5 p Z0 H
7 u5 z \$ k- C
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. * C/ {' f( q0 l' u' X
! G1 b3 F9 o' E; d) x" J' c6 j8 {( L
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 . e4 P( |, u" x% }; x
sequence, it is escaped with a 1, thus two 1 characters are output.
3 Z+ T4 m2 S" u$ k; E) b
# F/ O9 q/ y: z- K) H" l- s! f4 cInput 2 d+ O" Y8 Q3 n: d5 H
; j- y7 Z" t: k" h. ^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. ( X7 B X3 Z/ u0 F4 w8 F9 _) R
" k% _3 c2 Z& {1 [8 m* }
Output
8 ~4 [9 H c2 _* E7 b7 Y9 M! T1 _ f& ~' Z b! E2 ^) g; |
Each 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. ; n- H6 L* {) V1 ?# X4 ^
# u- r( X& c% J2 w& p7 A4 [2 [输入样例
! W! } U' U' {( q8 B( B H/ @AAAAAABCCCC
0 e* W* D* S5 L( k, G) G* S8 e12344
6 ^% X2 B5 d8 z6 H& J) X " k* }# \- e" H2 {5 a. y& X
6 S/ f" a8 D z9 Z输出样例
% Q, E4 J& \! U% m' [. z+ H& _6A1B14C
0 \: b5 T* y, B0 q4 s4 D7 |0 U11123124
' S _( O P4 `$ w( a" n % G0 R4 s. h8 K" ?9 X7 H
V9 {( q. X$ a$ }Source
8 _- g+ V0 q& m! `! C+ N
7 ?. p c4 K. a% aUlm Local 2004
5 |( ~8 t5 \, b$ ]3 {+ B. O7 }4 E" U0 N
example1:
) ~* C9 L" l; Z3 u' J( V0 k& |#include<stdio.h>
+ ]) R8 s, j1 a1 w8 _ J#include<string.h>* q* w6 p% K" x
void main()% G1 @8 ]. |% K/ G# ]3 r
{ int i,j,k,n;3 [7 g$ S: }; l: e: }: }' J
char a[50];. ?. S* [* L* D5 v0 D
gets(a);' T6 {: O( [, M1 ?. o4 o' H$ k9 Q
n=strlen(a);
; N5 G: Y% h3 H9 R! D0 x
2 I: [% y# F' h) a for(i=0;i<n-1; )( K, U% t0 o7 y( u- P
if(a==a[i+1])
5 A# V+ `- H2 F; ]; ] L4 H+ r { for(j=i+1;a[j]==a[j+1];j++);
8 i1 Q h2 x3 P j$ w6 D printf("%d%c",j-i+1,a);
) y" x8 z9 }$ _0 u i=j+1;
' I& Q. D7 M$ P$ e* h }
. c+ A+ _: W6 c1 o- t, P# K. e9 _ else
; E; d! L$ d$ v% m# @ { if(a==1)
( Y7 Z& k$ ~( V4 M0 b { printf("11");
9 D6 u& {6 h' Y$ d3 k i++;" K' {) p: q- r. L/ ~
}' ~0 \+ j& K* e4 N
else6 O0 R: K0 M# F
{ for(j=i+1;a[j]!=a[j+1];j++);
5 |& `) k3 S' b" | k printf("1");
0 m' B6 s; {9 k5 _! } if(j==n+1)
" o: T& y0 _& y S2 G2 T j--;
' F6 V3 N! I3 L g3 o, p. s* A for(k=i;k<j;k++)
, ]3 F+ j% j, q1 L' Q printf("%c",a[k]);
: R: d& P9 Z' F- T* \. C. n) s: W printf("1");" ?3 a8 d" F! }% d3 P
i=j;6 v2 B# \5 Q( D/ G
}* h. [2 |/ H: S+ r4 l0 O
}8 Z8 }0 \; F$ b% Z
if(n==1)
- r5 V/ f- H7 l4 h if(a[0]=='1') w. G# ^- M/ @# R' ~
printf("11");
+ W0 S, v' f$ r/ V8 Q5 n0 h else- I1 {& g( M6 F0 m6 v; f1 _
printf("1%c1",a[0]);
& T1 E3 }' d; s* B$ O printf("\n");
0 B3 \- `- a* G4 N* M: n; o }
2 H. o9 V* z/ R$ b评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
0 b0 r2 t6 e* r' q- _7 x, C#include<string.h>
4 z; q) h, i3 Z5 d8 i. qvoid main()" V: N7 h$ F/ a2 [
{ int i,j,k,n;
+ F7 V# f; w( v N7 x char a[50];
: |- ]; i9 P% d0 e! u gets(a);
- X: C7 n4 @) T& e& q# ? n=strlen(a);& _. K4 p3 b! L2 \/ L
+ f: F) J, k" c, ~ e( Y
for(i=0;i<n-1; )
6 y/ B+ n( j0 a# x if(a==a[i+1])/ t, |* B6 K7 I2 Q$ e+ x- V
{ for(j=i+1;a[j]==a[j+1];j++);. W. h3 n* V' Z3 i, e
printf("%d%c",j-i+1,a);
5 G" _& E5 c4 m! p i=j+1;
+ q6 X3 Y$ a( | }
7 R2 r9 T9 O% ]* v! z! T else
, q. l+ c* p( u { if(a==1); @: c: | V2 B( E" j
{ printf("11");
, z- C4 \! V9 M W5 G i++;% k- U6 F' i: X. O% }
}
1 J' d d1 u4 E5 ^& ]. g else
! [: @4 |$ X4 h. e E$ I { for(j=i+1;a[j]!=a[j+1];j++);9 v/ ~% |* c) h
printf("1");
3 r) d; B! o0 x+ W! d3 c# R if(j==n+1)
0 O3 S0 _2 K4 H! X& O* y2 o j--;
& C5 y1 F% H1 S9 G for(k=i;k<j;k++)
7 y+ E; M6 b1 J3 k0 F4 s printf("%c",a[k]);" P* u4 n+ d& v0 A9 S( T
printf("1");/ D$ c4 c0 ?- m0 y1 U! Z
i=j;
! ^; j$ l7 z, M4 ]% f K; [5 Z }+ E1 B) G7 `+ |0 o9 p6 j7 R: i0 z
}
7 A, }2 B0 b5 }; v* z if(n==1)) j- \2 M; B: n) m/ y
if(a[0]=='1')6 a; u3 t5 m) W1 t
printf("11");
$ I: H' V! @4 O+ P- w else$ @; `1 e% ?- }/ ]) ?& f
printf("1%c1",a[0]);3 h) D; [) C2 }) W$ }' P' H x
printf("\n");
/ g. r$ K8 X* Q } example2:#include<stdio.h>
! X! ?/ B" y- [! N3 p#include<string.h>
! {: X) q2 z$ E4 x# J/ p4 g! c' `void main()
3 }- Z* a) g+ H v{ int i,j,k,n;
6 [) v6 r; J+ @! F4 ]( k char a[50];, e! s' w# e/ k
gets(a);$ y, `% o; Q R- x! N
n=strlen(a);
. g, Q) P0 V3 J$ _/ X* B3 F2 `" z. r5 ]/ M
for(i=0;i<n-1; )
% H; O \2 _& Z if(a==a[i+1])9 w: W9 Z) o0 O" p& z8 j' _, M
{ for(j=i+1;a[j]==a[j+1];j++);$ _( x7 F- ^ v" y
printf("%d%c",j-i+1,a);- u, A5 `9 V6 E5 |
i=j+1;
/ q0 u+ e3 Q$ L5 W8 r }
- c; }$ p! [7 L# @. m4 J% q! i else
: I- ?" b! k4 M0 p: s* y3 E4 o { if(a==1)( _* m X# l) X' i* r- y# P
{ printf("11");
) g5 i3 M; s) H% |1 g i++;
: m, X8 D7 `! L; z* D5 r }
, M `( k& z' f: \/ ^; I else
( Q7 i& R( j; \( ` { for(j=i+1;a[j]!=a[j+1];j++);
6 w- \+ X: C$ x. @6 | printf("1");
7 N$ E( ]6 g9 |4 |, Z if(j==n+1)! C: I2 ^$ C! x' c, R
j--;
, Q+ l. B7 q: m! ]3 M0 p& I) m for(k=i;k<j;k++)
! M, {7 f3 X6 T8 |7 I K3 F- ~ printf("%c",a[k]);
. z/ f3 N* ^5 A3 b9 l8 C6 G% n; E printf("1");
1 x% r t5 e8 z3 t% l i=j;: N K. @6 q% @, {" x5 [
}% C3 V. \. h0 X. @# ^8 B% P
}
9 j+ d5 V1 }3 L! v if(n==1)
2 |+ S6 R. h" k4 E, { if(a[0]=='1')
|" d- K. d* X U printf("11");7 A! ?" @: Q, s% R( u# \
else
- }) K" E5 t9 R, [5 o7 X0 Y" O0 X9 ^$ N printf("1%c1",a[0]);" z) o. T+ M8 D* v( y
printf("\n");4 B9 k- T* j- A5 L" _( a7 }, K
}6 ~* s' c9 O- y5 p
example3:#include<stdio.h>) E9 |( i+ M+ _
#include<string.h>; |1 G+ m% S8 c) R
void main()
3 @' h0 r0 ^2 b{ int i,j,k,n;
8 r# N% O, b5 v* Z" _0 _- d- ^ char a[50];- K3 W" V: c& |, A9 b. H
gets(a);
8 y. p ]# v3 a7 _" | n=strlen(a);
; F, t# e$ u/ [/ W4 U. U
; H/ ]3 x& m1 ^ for(i=0;i<n-1; )1 k4 Q" O" U% X2 P* m
if(a==a[i+1])
. M9 m7 W2 q. p { for(j=i+1;a[j]==a[j+1];j++);# n3 J. b# x& k3 ^5 K" J& y& i
printf("%d%c",j-i+1,a);/ a- K* U) ^. b; Y8 Y' z
i=j+1;
- n/ f# e3 O Z9 D; h5 N$ m }
- ?8 ~$ h( m& r2 L6 r, ] else
' h2 T6 P9 ]) c( C" @& Z# [ { if(a==1)$ I, g! Z! d4 `: d1 N* Y
{ printf("11");4 Y3 I' O6 [" Z$ @+ R! e/ v
i++;' V7 y$ @0 M* a: {% ^& Z9 y# X3 O3 j! n
}
" W$ N- o' S( @& G% x else
& K( j. H" V2 m8 C. @, u! T6 u( _ { for(j=i+1;a[j]!=a[j+1];j++);
. j- a' C" L3 K printf("1");
, g$ Y5 y6 D& S4 a4 ~2 T' L if(j==n+1)
7 w1 v, ]. F( U8 A( D! D7 n j--;
f( G2 z2 f6 Y for(k=i;k<j;k++)6 t2 T% T/ K5 q X! k: t
printf("%c",a[k]);
! U5 N' {) z3 @ m8 @ printf("1");! H: r9 g$ _+ }& T$ y8 l
i=j;
+ N# X( H% o( U; t* U9 z$ K }
. h) l* `$ c2 v9 s z. ^7 x }
! Y" h# z/ v- F5 F- _2 y9 J' { if(n==1)1 t/ e7 O8 g W3 o1 u; Y, A% J
if(a[0]=='1'). Y; ~7 @/ H( a% r6 U/ u% v" W0 z; b$ w& P$ F
printf("11");
9 [3 T; q ~( w! e$ Z else4 d+ U# Z9 l& C) \) w' o6 G
printf("1%c1",a[0]);$ X5 C- w @1 v8 H6 r
printf("\n");6 }# B0 u! T9 s! r+ C0 |
}) f% b: L9 q" k# q: E; z+ y0 Q! ^
来源:编程爱好者acm题库 |