Run Length EncodingDescription w U" m S% g2 g5 t
) l. ]. [0 ?/ B6 l! c
Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below.
5 u3 ?7 X2 t! Z3 L. ^0 G7 @) t. M$ ]. L9 k- O3 J J' j# F; ]
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.
3 i1 i3 l0 E" G7 W G* z6 T" r* K7 d, q- Z0 K3 j1 o' \! R
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 ( i% \) H7 `( |" c- T6 g
sequence, it is escaped with a 1, thus two 1 characters are output. 6 Q" B5 z5 _" Y+ g3 o3 N
6 C# w" f* ]) W5 U+ X. m2 F0 NInput , B/ W+ `" k" w
1 q2 X* }" V/ L
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.
) O ]/ u7 e0 V" Y
% U( @7 \2 n/ |8 G3 ~Output , a7 C& r! Y: r" i
( d( q; c5 @' e! R& uEach 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. , e& m0 L0 \8 l. ]
# c# ]3 x6 t/ R输入样例
. ]2 @/ k- N$ {; p# d4 D4 ?5 B: uAAAAAABCCCC, I0 X) ?* y' x; v2 D- {
123446 x2 r' z+ G' ]
; Z/ m {, n) ^; N( S, i, j% \! X
! f6 k! u6 X8 y- J* M% T) X* s
输出样例
; e. {* x' q) w; N) V* ]6A1B14C
$ Q, F. B3 \! M- }111231249 [8 [! l- D) c4 S! X" S
: i( M- W$ A; J+ n' f4 ^9 t! N
- g' J. d9 n$ K5 ^4 X
Source
2 D$ V0 ]) r0 u5 J. ?$ u0 `% f% b2 H7 {8 x" z. x2 s- p G, p
Ulm Local 2004% N0 n" U& S9 `+ g. v* o+ S' N
8 h! B5 z. s2 p' F) xexample1:
7 ^5 i4 L3 `; p5 p# J3 t#include<stdio.h>$ K8 `- L+ E7 O. w. B9 X
#include<string.h>0 |/ o& f, _$ i7 h
void main()
C7 h2 Z- R4 j# Q- y{ int i,j,k,n;
# [2 M: T( E& W- a5 X) c8 L2 z char a[50];$ \. R$ [7 {9 [& D. F0 k2 u# b
gets(a);
7 c+ |4 x; X, J2 B7 ]" x% l n=strlen(a);
3 ^3 n3 s0 |/ t1 u
3 o% R( U: C/ B% A! w4 C! W for(i=0;i<n-1; )
; e! p8 r8 i/ ^) N9 C0 J if(a==a[i+1])
' g4 w( h0 O# t A: C { for(j=i+1;a[j]==a[j+1];j++);
+ m% N" t3 M! H1 P, o# N0 Y- ? printf("%d%c",j-i+1,a);
' r7 \3 d, Z% x/ v$ Z& K i=j+1;8 q* e& \! M1 |1 I n) K4 W
}0 E0 P/ s/ ~ ~5 D
else! \# @; Q* I! m# Q
{ if(a==1)
5 w( r. g; z# C4 V- e2 z { printf("11");
6 F1 X9 n% ?1 \. ?+ X i++;! @' E- W; z. p& I& e# D% R2 y
}- \0 n! r4 z1 Q8 J) N k* L3 G
else+ B& v6 P" E# q _5 b5 k! P- G
{ for(j=i+1;a[j]!=a[j+1];j++);
5 J" l, |- g# ]: ?) l printf("1");7 b- u( _) {; n$ P
if(j==n+1)) J8 g0 Z: c3 S- l1 s+ K' `
j--;
# C/ p4 U4 N+ p for(k=i;k<j;k++)
. u9 \+ Y0 w! t) |2 f! ?; z7 | printf("%c",a[k]);
! i& C# ?6 Y* D9 K0 ^ printf("1");
) Z; _9 O# \7 [* _' B f7 R i=j;5 h) E& E" x% D2 {
}
% ]- d' M. F. b% v k }
& F( W* Z. E- Y8 a$ ~ if(n==1)
2 l9 f* o$ Q/ s: Z: f if(a[0]=='1')3 i( `& [' S9 I4 a: T, Z
printf("11");
7 r( O7 ~! z/ r* k; R: @$ Y5 Q else
' Z0 Z! j0 Q& a# }+ F, D printf("1%c1",a[0]);
' S7 T) v9 u0 o5 I. t! v printf("\n");
( X- h! G9 o+ a }
5 [& M: S; Y! v, P评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
9 ~ C1 I# h* M" F, u1 M#include<string.h>- s# m- ^- F* d8 d, v4 B6 ^# W
void main()
5 s' T: x3 Q8 k5 c6 V{ int i,j,k,n;
2 q2 l8 R9 j5 ^% }" G0 ^ L char a[50];
* L3 G8 s/ I0 F0 N gets(a);0 _9 ~3 @) u _3 [
n=strlen(a);
& i! @, [+ F, `# G) I( V" T- e& Z4 U4 h
for(i=0;i<n-1; )
0 o! d( A' t4 r+ X# m+ C if(a==a[i+1])4 d! q2 ]# m) ~6 H! z& z! B3 \
{ for(j=i+1;a[j]==a[j+1];j++);
: e3 S% f; s* I- O8 O8 E printf("%d%c",j-i+1,a);. U( V6 c) B: Z8 x" H6 A
i=j+1;# W2 h, q0 t+ A% Z$ k3 r) S9 P3 ~3 }
}
3 O. M: U! Q# A3 l& x else3 Q6 }, [- |+ R9 m3 ~( |
{ if(a==1)
8 ^. Z- {5 T4 u { printf("11");' s+ J9 {0 P* H2 E5 c
i++;
- G. Q. s9 O0 B# |7 Y, z- D/ z' ?2 l6 h }& h r( c$ I! ^% j2 N
else2 Q! L7 E4 Z' [& H
{ for(j=i+1;a[j]!=a[j+1];j++);0 Z4 c) j/ s5 x9 q
printf("1");2 u! _4 R" }# E0 Y& U3 [- w
if(j==n+1)
2 F4 O/ D% q5 l& j j--;
4 W* E4 l9 y/ h j9 S for(k=i;k<j;k++)
* S. Q& K# D5 V5 H printf("%c",a[k]);
( \& H) R0 u& p; t2 F printf("1");) E( `% Q; E/ r. \" O
i=j;
+ ~* {% [9 Q% j8 w- A4 L }" b& u! B9 ?# a G) m* E- R
}
! F' D3 [# j+ V if(n==1)1 X' R2 z6 Y$ S) e
if(a[0]=='1')
% E6 ~5 I/ _, P printf("11");" s6 J& n9 A$ E# a3 ^' k. S6 v5 }
else
/ L$ ^0 a: `/ ` printf("1%c1",a[0]);
2 \8 U" z2 ~' I; M& ] printf("\n");% H" Q* e' [1 [; Z: o# R7 R1 [+ o
} example2:#include<stdio.h>
' l& }9 R7 m6 B; z: p$ H5 M#include<string.h>
2 h" r& R7 h* ]* \void main() d. {- B: v2 V4 t' b
{ int i,j,k,n;
0 Z) [: N& v, G( p! m6 B0 R% {( | char a[50];) S8 k: s+ l1 E+ }7 Y
gets(a);" z& E8 M/ c& L7 B0 w
n=strlen(a);9 }- k& s: T$ u2 q$ y
6 }) A, Q7 `- x0 p% b
for(i=0;i<n-1; )
/ _' U5 F c* }1 ?! X/ V9 F if(a==a[i+1])
* T* P" Y, {1 r9 G% f: q/ ] { for(j=i+1;a[j]==a[j+1];j++);- h2 c3 \: Q: S
printf("%d%c",j-i+1,a);5 [/ O- ~) H5 f
i=j+1;
1 `! |- d5 J% M1 S6 i( u# }* J }0 z. y# u; x1 Y& T0 Y
else) \9 {. P; V5 c- P+ G( G
{ if(a==1)4 V$ U9 C; }# Q: u1 N% I% q
{ printf("11");
) g q, t" O1 I0 @ i++;- r3 K' V0 J* f9 g0 ?" F: C" C8 I2 M+ ^
}: {3 B7 f( \! X& [) F( v
else" l$ ]/ W8 U% I2 V
{ for(j=i+1;a[j]!=a[j+1];j++);
; z1 c5 M: u$ k+ i printf("1");
: Z/ o- T, J* p. y2 v# @ if(j==n+1)
$ v# s1 `' ]7 E3 H8 W5 K% p/ [ j--;# [; B* Z. s; o. n
for(k=i;k<j;k++)
* w# C/ d: o, G+ c1 A# H printf("%c",a[k]);3 O, Z' p6 }8 g/ n1 T. z
printf("1");
! l; s: h' A! `/ g4 r i=j;
/ i$ Q/ {6 r2 ] }
S2 I" A% E @6 W$ t" x }
& x) } I" C z7 ^! z; ~ if(n==1)9 l: q3 ]/ J' O% L5 V+ k
if(a[0]=='1')- K: y5 u' ?9 \% r# Z+ j7 S
printf("11");
6 ~. w0 Y% u* A6 } else
3 w1 e& R$ f7 T printf("1%c1",a[0]);
$ I# @8 v6 Z6 n6 A4 ]5 w printf("\n");( p9 b' _$ A$ K) R8 [2 ~
}* ^3 ?; K, Q3 s0 v3 U
example3:#include<stdio.h>
5 }5 p+ A( k8 B1 O: w/ J$ ^#include<string.h>) g; ]) D7 S% s; d! W
void main()1 o: Q! P2 _5 P0 q2 L
{ int i,j,k,n;
3 s, t% [" F$ P) q char a[50];
3 w0 k4 H+ O0 v0 d gets(a);6 C" u: B8 V# X
n=strlen(a);
! R: E ~% `. O% u" u
6 r: g8 ?0 b& e% S& F for(i=0;i<n-1; )" L1 \. b3 b4 J2 W! }
if(a==a[i+1])7 T8 z& k# V1 i
{ for(j=i+1;a[j]==a[j+1];j++);
3 a/ o8 d4 @3 T& D+ ` printf("%d%c",j-i+1,a);, w# d) j9 S" @# v
i=j+1;
* Q$ H$ Z% h1 | }/ M* A8 C- W0 n( R3 L4 c) d) K
else4 C* ?4 ]2 `: P& b9 H: Y
{ if(a==1) W; [8 `! S& Y0 Q
{ printf("11"); D; K! J+ V6 g( W$ x2 n2 v
i++;( b1 M$ e+ r9 d' R9 S- B! q/ l
}+ w3 ]" @9 A4 v5 Z
else3 j5 I8 y" V8 V/ }0 q
{ for(j=i+1;a[j]!=a[j+1];j++);
$ m b* T% N- g* R& @# X printf("1");+ O5 e% `* j9 E3 @) H; v
if(j==n+1)
+ M3 g( l* Q! O9 ?6 H j--;
3 y5 r' s9 Z/ E9 g0 S# ~ for(k=i;k<j;k++)! F- T9 L( _6 R" d8 I
printf("%c",a[k]);
: i3 x. T' L# L2 }5 p printf("1");
$ L7 I6 J* @5 c ? i=j; H- a- Y) U' c" d+ ^8 v6 K
}
3 E( Y" |1 h5 {4 q/ J }4 C8 N7 r( ~ \6 k2 o
if(n==1)
+ E! V3 i% F f0 y if(a[0]=='1')# M" |" Y: p. N! G( p
printf("11");
$ d' Q) u8 B+ t6 z) ? else) v0 e, u% I) b. {
printf("1%c1",a[0]);6 p0 b1 z* X1 H5 d b. M; \
printf("\n");
$ B' @: n% T( ?) A- C6 K }
: p8 t/ u5 I, e 来源:编程爱好者acm题库 |