Run Length EncodingDescription 7 J& A( h" g) h4 H; l0 X, A
1 [" q2 J5 ^- ], W! c% J6 j3 Q- A
Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below.
8 ?) Y) @" s- W" \* n0 J5 B
}+ U7 }' E& V' h6 tAny 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! M8 x4 D) y1 e" W$ c
' N6 e9 m. }. ^/ r6 w0 o aAny 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 # \# n+ ?, U2 u
sequence, it is escaped with a 1, thus two 1 characters are output.
! l# o# J+ E* S+ _: \' I
9 \! i1 i0 E* E CInput
4 s! ^) B8 s; `
' X2 a3 o! F KThe 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.
1 v" o1 |5 k0 o4 W' w; L) l
( ~+ @. W- X+ i0 o; U5 c- F/ ?# c/ uOutput
9 ?" B9 m+ I5 v7 @# ~/ k4 M! R) v& y; v3 ^
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.
' ^; ^. d9 H' u5 [' w4 z( B# H0 L' N
/ r% I z1 X: e输入样例
. o% v. h2 ^$ [% i. S( }AAAAAABCCCC7 m! J7 w# Z _4 ~' ~' w: U+ b
12344
" D' [, @0 g! o- x. f' k 9 S. \5 Q( `; E# Z3 Q
1 m# e( ]4 {& b输出样例
7 Y+ X* h' W7 X' k5 S6A1B14C d/ m J" F6 Z
11123124
- f% d9 B! l7 R/ c- e ( c+ g$ k' n2 t& l5 r
' Z! {9 L1 Z$ s" v* V+ w1 LSource0 R) o, M b+ E( F0 z
2 R! R+ u% [' ~8 e/ J6 cUlm Local 2004, ~0 K6 N) I% A5 F
: c$ l7 X* @2 [example1:
) l) Q+ s( F% b( L#include<stdio.h>
/ a# |7 X9 X/ b5 ?! C& l3 g#include<string.h>
# G$ j1 y* k7 n( Uvoid main()& z- o" `! e$ r2 j5 T- W, h) i6 v
{ int i,j,k,n;& ]* ]9 W. p9 K! O5 x, j( e J
char a[50];+ t2 q) J- h" F3 a% ?
gets(a);0 G1 F: E# X% G& j/ d" ?5 w
n=strlen(a);
% m+ A8 j6 }+ U* t% O
( P& N/ b: g& I. t, B8 m for(i=0;i<n-1; ) p. x x& G# F9 {' I
if(a==a[i+1])3 K t* h" k0 Q* D6 N: P. Y
{ for(j=i+1;a[j]==a[j+1];j++);
7 n F7 u0 i! p3 ^ printf("%d%c",j-i+1,a);
$ n! t# T% f; `0 k: g i=j+1;0 K8 \% Z8 C% e- G
}* E9 B0 V( _2 V. r, ^ N
else
. ]1 {8 M2 A% z { if(a==1)9 ] e% u+ {9 N% n; H! b
{ printf("11"); K% K* W% L4 B1 i/ n l
i++;& o2 V8 _- S: R9 o; n V) \
}
/ `: @3 Q. J# _' c% P else2 ^1 n( k$ K- h t" N% F+ L
{ for(j=i+1;a[j]!=a[j+1];j++);
: o \! u" `. P5 f7 _, c- T printf("1");% U& |9 H+ b' {9 j0 b
if(j==n+1)
$ F) c# t2 P( n) K j--;
' O4 g$ C4 ?& {7 r$ M for(k=i;k<j;k++)4 B3 H, d6 v( ?; f8 K2 y/ I
printf("%c",a[k]);, g) K1 v, b9 g
printf("1");/ P$ i0 x$ i2 Y4 R$ @- ]- [4 |
i=j;
/ y" t: c9 K, P9 m, R3 ] }5 z3 b+ M0 |- `. ?7 X3 C: w" l& H
}; F0 H6 `! k, z: ]7 z) a
if(n==1)/ \0 \- E% H3 g
if(a[0]=='1')1 D! s' s3 r1 |3 z2 V6 l
printf("11");1 }% ?% r- C0 L q+ y* j4 n0 T
else5 o- U1 r7 |$ k
printf("1%c1",a[0]);
/ B( R; v) U2 o8 w5 n' Y& G, D' f2 g printf("\n");8 u) j. r' K& P( M
}% s9 Z/ S, _# \- ~6 ^# p L [, N
评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>; l, q& P0 b0 g0 t
#include<string.h>
9 z! F2 b G K+ j" K7 Pvoid main()( d- n5 }0 H* |% r' M
{ int i,j,k,n;
+ w6 p6 f; |. r char a[50];0 h4 k ?! g! l
gets(a);
* F+ |0 \* \( _7 Z9 C* ] n=strlen(a);
- i: v7 N1 k: F8 O+ [# L
- q9 C3 Y: g2 H# l3 h0 H3 @ for(i=0;i<n-1; )6 t8 j& T& g" L0 d) z, Z
if(a==a[i+1])
9 J& L5 H/ g4 }5 D { for(j=i+1;a[j]==a[j+1];j++);
' V f. T1 ?. z6 O; r9 o9 x+ X printf("%d%c",j-i+1,a);
; X4 b: C% m, q0 J9 ^& P4 k! S- c i=j+1;
+ ]6 F5 a' |3 q. @* U3 G }1 K [7 C6 ^* M
else0 \+ p) E$ c* G
{ if(a==1)
3 W2 {) P) n/ P2 o { printf("11");
8 L, {0 T# q( S i++;0 Q- p2 \! L) Z
}0 H: c$ q# t7 X6 k! l4 u( C- Z
else
$ |/ ^: } y6 \& B; M/ n# D { for(j=i+1;a[j]!=a[j+1];j++);
4 ^# ]. m% _+ z' Z5 w! k }3 |: c# U printf("1");
7 `0 W3 {/ H# Q3 |% h if(j==n+1)
8 U6 H2 f M6 Q: Y | j--;# n) q/ ]9 W. G0 ~
for(k=i;k<j;k++)) m7 d9 V+ f7 H8 @3 `9 U
printf("%c",a[k]);
; W- P' ~8 n: s' s7 ] printf("1");2 f5 F' Y4 G, C+ y+ r4 P( a, Y, r4 m
i=j;
3 Z3 B, {, W3 K# E4 G! x$ h6 C% P3 \ }
+ e$ E5 {. {+ x6 N1 F }
( m; i! R1 P8 ^- @/ }- m9 c7 U i if(n==1). F2 t" k! s D1 t- T
if(a[0]=='1')' Q& N( Y7 ?& m9 c# U5 ^. J }
printf("11");
0 C! }; `( O5 ^; J" x) f else; D& m7 {" [- e' k
printf("1%c1",a[0]);
5 E' P. K" P6 X: c- J printf("\n");4 L2 p7 I& l2 H1 _3 M* q
} example2:#include<stdio.h>: R) X2 t' r1 o+ P
#include<string.h>
# w! F+ m) [2 a7 v" m3 v* Ivoid main()
/ n2 {0 C5 l; [; d0 C{ int i,j,k,n;7 Y1 [0 l+ c' K' ?
char a[50];
# A/ `: z/ G$ M" p3 H6 A' o* I gets(a);
" Q" G& K7 J2 |8 j n=strlen(a);
, X; v' F% J; z+ z* d, t! _* ~7 Y3 K* k7 G; I
for(i=0;i<n-1; )5 l" M0 u3 t0 j) @ B
if(a==a[i+1])
9 X: r- K. Y6 A5 [0 c" q$ w { for(j=i+1;a[j]==a[j+1];j++);
6 O2 c! }( L% y3 I- M( ^ printf("%d%c",j-i+1,a);
/ m2 Q) D, ~" v6 ` t i=j+1;3 I8 C3 O1 `# m
}
( r2 y H- Y/ }5 l8 z v$ ^ else$ G- Q! h, X8 v( I
{ if(a==1)5 O9 q" b& A: e+ l% K$ z% u i
{ printf("11");* I- j" f* z0 g' H" V: Z# D% l
i++;
$ E Z& G, Y" s7 e- R7 ?" a4 Y }7 N2 z \& D, F) j; S- {
else. b3 l( m1 B9 f. H) Z O5 y5 w
{ for(j=i+1;a[j]!=a[j+1];j++);# r2 I" Q- I, K! m5 ?! o
printf("1");
$ J4 \/ z4 Y# O. U* m, ] if(j==n+1)
- v! ^) u# r% c7 |0 G j--;' m- [9 L; u4 w
for(k=i;k<j;k++)
" m/ s M$ m% R" c+ E( I0 @9 G printf("%c",a[k]); P: {2 Q5 e" \, s7 [
printf("1");- G6 I# s. u0 x3 _9 W! I8 R) F
i=j;- F$ z7 B1 u4 G6 H9 ~( H
}8 h1 b( P1 P7 R& _- O
}. Q8 c$ P, Z8 F, T, u# {
if(n==1)
3 Z' x8 \8 y( k7 _" T if(a[0]=='1')
- L% L; f. L6 I4 T printf("11");. P+ o$ g! z% c3 N" ?1 S- d( Y
else
, x1 q. a/ e. E9 Z7 N: K7 h printf("1%c1",a[0]);
' d/ a3 f9 e! P1 c, i. h1 f8 q1 ?" x, v printf("\n");8 G7 m0 E6 \* l, d0 q8 L7 b, M
}: D0 {) d4 F4 W0 b' i& b; I6 D! x
example3:#include<stdio.h> z( s* J ?6 D4 h/ p( W
#include<string.h>
7 f% A; S5 }2 s# z' Evoid main()
& I8 b2 S- U* k1 k2 W+ k{ int i,j,k,n;
2 s* A& A! E7 B! k$ b* T5 e4 W char a[50];
: M, A m Y' z% v/ [ gets(a);" L2 ?+ u( Z. h! f' A
n=strlen(a);% c! D7 g/ j9 X; z: {- \
* ^; |0 Q0 u! ? {' h& Y
for(i=0;i<n-1; )( ?9 D7 }6 Z+ [$ D: Y$ K" `4 _0 U7 }
if(a==a[i+1]): h J- b2 ]- y5 ^
{ for(j=i+1;a[j]==a[j+1];j++);2 {. p- p4 v* J
printf("%d%c",j-i+1,a);
1 U! [+ e5 U1 m" R9 J. V i=j+1;! i6 s9 `. p- m+ x, p+ @
}
- k( D3 c* ], p2 c L/ z& n else
# \/ x" i2 ?$ e( n9 D { if(a==1)
9 N6 z5 N, E- [: l, L: K { printf("11");
" q# b; ~1 Z. _! ^ i++;
; _9 @: Z3 S6 M% z$ N, c( ^ }3 n8 c/ L: d4 U9 _6 v" D# J
else
' ]0 ]3 }$ h" j5 o0 i _ { for(j=i+1;a[j]!=a[j+1];j++);
' g- d+ S/ k. v printf("1");1 I$ }( z' o+ K# k' _9 I$ p' s
if(j==n+1)
5 y+ Q8 q+ I5 Y1 ?3 y# C j--;
+ G: o6 | d; M for(k=i;k<j;k++)
' y2 G3 M- Z$ p printf("%c",a[k]);" J& h# g4 N0 @1 v" w
printf("1");
' _4 ] K! N( R& [# L% i i=j;: }5 m ? g. T# v, P
}2 Q: v) Z5 n9 x# U' y$ _
}
9 ?" d! q+ k9 I) D, |- T if(n==1)3 l- t6 a, v. H
if(a[0]=='1'); m8 V& L# q& @$ n: Z( s8 N
printf("11");
5 Y+ E& z7 o$ Y8 t1 c: } else+ I. w0 L0 N, {
printf("1%c1",a[0]);4 l; u8 b! |( Z" d
printf("\n");( P' L" |' A( S/ [1 X9 v5 B! {
}7 m/ \2 x0 _; I, S6 V8 E5 x7 l
来源:编程爱好者acm题库 |