Run Length EncodingDescription 5 e8 k/ f% X9 O& t" {
( y% b# T$ U7 W4 B" q( lYour task is to write a program that performs a ** form of run-length encoding, as described by the rules below. ! J1 F3 W% X+ V9 b) v
p1 X! g/ Q/ g/ _( @
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. & L: M5 k( x5 m: q6 Z
! `, M: M: H2 v8 n$ K |. G1 @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
! B! y, C( @) ~( N$ nsequence, it is escaped with a 1, thus two 1 characters are output. , X. |% b4 q0 ~& l. k: k3 ^
6 N, i. Z, \, D; K3 m- QInput
! b3 x' P" g0 E& P" L) D/ b& Q0 e0 l
# z6 Q% h' W8 G& u! k) }4 i& 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. % A5 w% x9 Y- ~* X/ A8 K
7 W& t, @; Q, l; V5 u7 t4 _3 i9 n
Output
+ G; X3 K+ z+ r. A% n) K b% D; v i0 B3 n: X( H! V q$ v2 A8 ]! A
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.
6 @" W% D& g/ E0 e, C: O4 `; w: C5 z3 n' s) ^* h
输入样例 2 M- O* Y8 a& Q1 ^4 R) I
AAAAAABCCCC5 H8 h- ?/ D7 X6 a+ \
12344
, c1 B* u5 g; s& E/ I/ b& s 9 l! p3 b! `+ q- e
. f3 j2 _: j9 x5 V
输出样例 7 O# l0 r4 W' X* A6 `7 l- O
6A1B14C0 H o( {+ s- S% c
11123124
& s0 Z% S* Z; P1 g& R# e. `) H
! i) l1 Z& }7 \; ~1 L" H; v n" S p, O( @3 c8 y; d
Source
5 R# s4 [0 G) c: j& R! B4 y, C% ^
+ g" S: O. H& [6 F+ f+ BUlm Local 2004# v" a* Y, ~3 ?4 P) X
. `0 m0 s' |; S$ j( E# r- B$ Uexample1:
9 Q% { W. s& `6 f#include<stdio.h>7 G8 O) j( t8 Y0 `& {
#include<string.h>
5 m$ K R( c/ E2 R1 [" U; g8 U( w/ Gvoid main()
0 |9 k* r4 y3 U6 n{ int i,j,k,n;
; y* C3 T1 W4 I: S2 ^. y char a[50];
. D2 @- D6 J' g8 \! K i gets(a);
) c' }+ K; i2 V3 g n=strlen(a);& G: E+ N' i' o) m2 r( @; ? ^
. e0 U+ ] K# i( R; g( N for(i=0;i<n-1; )+ C" w2 N5 P* { ?
if(a==a[i+1])( y9 Y0 f; @, Q! s: U( K
{ for(j=i+1;a[j]==a[j+1];j++);2 m" }# z- o) @3 [* M
printf("%d%c",j-i+1,a);
' q% {7 K2 f- i# c4 w# l8 Z i=j+1;
5 u4 o3 o+ \. B+ y }
( _+ ?0 O: d* p else6 N( _. s' t* ?) J
{ if(a==1)
+ v6 Y9 v, O3 F) y, ]8 M, i2 ~7 U' E* E { printf("11");" J) H4 s8 u- k9 y X
i++;
; f6 c5 `6 F+ y$ A/ {+ B% y }' z/ h! b2 v$ s, S6 h
else
4 u5 H/ S4 H* J' X S) j, n { for(j=i+1;a[j]!=a[j+1];j++);
) w+ J) A' O8 d# A/ l printf("1");" L, y: M- @6 R; v
if(j==n+1)
9 W2 S, c6 N6 z3 C8 |# P4 V j--;
$ ^# U$ ^) d& l- W" \ for(k=i;k<j;k++)
" @" ?( W) ~: R' c9 L printf("%c",a[k]);( K; m3 ~+ w. k; _) p! ?
printf("1");
8 F5 v u) G) g2 `$ b6 J$ @6 Q i=j;1 _. F% |# |# @) T! n, ?: p
}4 x/ [, \8 L3 V$ Y8 p
}
5 _4 M U3 O% j( O6 t, W if(n==1)& G7 `$ w. f& T. L) P
if(a[0]=='1')
; i$ y6 O0 u) p$ I1 G) v printf("11");" d8 D# T, r" s
else
: E& o( u: d* j, E printf("1%c1",a[0]);* O7 a, v# u! B9 R& [$ f( ~: S8 U
printf("\n");
0 ^0 Z1 ` h+ K5 a C1 v }$ v, v* I `' Q0 P) l1 \' ?
评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
T" f/ `2 H, G, s f5 N#include<string.h> N' t/ O7 j5 J; s
void main()
4 n* R \. p N{ int i,j,k,n;, [3 _4 y& R9 k
char a[50];
3 U6 i: c! D3 f7 T( E4 g& m gets(a);
0 x7 Y5 {+ Z: U$ o5 T9 h+ s1 H n=strlen(a);
T, o" w; u* t9 J. _; m& Z- W3 ~: ~# F9 k
for(i=0;i<n-1; )
' y4 K U. G. H- l8 | if(a==a[i+1])6 @; g7 X" a9 X9 @) ?9 `
{ for(j=i+1;a[j]==a[j+1];j++);8 J' J# I- L; Y( U3 i: t! z5 m4 f
printf("%d%c",j-i+1,a);
4 V/ s: i7 k1 Q- p4 ?# h i=j+1;
: J1 e7 }! q5 D- f) ?# [6 p }; E' R Y0 O T0 w7 V: B7 @2 F7 t
else) l7 R" k- N% {, Y# v
{ if(a==1)/ Q; C! @8 y/ J/ N* D) n% V
{ printf("11");
- j; v) s5 L7 H% Y1 J5 m i++;
. {# Q! E. i s! D }+ ?# k" k% \" O @- @
else& O+ T8 x5 n' p4 v) ^# r
{ for(j=i+1;a[j]!=a[j+1];j++);7 J- c. J$ G6 j1 Q* [
printf("1");" o. W+ y+ a, M, W2 T+ R
if(j==n+1)
- l) t$ t: |+ ^7 o( G: e+ u: p x j--;" h4 ]+ K C$ h7 M" W3 E6 k
for(k=i;k<j;k++)) ^1 e) u' _, j$ ]. ^/ o
printf("%c",a[k]);; V9 z3 R8 E5 t$ ~! i, P2 Z
printf("1");1 P/ j( z3 {% w+ g
i=j;
+ v# r3 `$ k. O- H+ O" Y: C+ { }# m! g! i% k: w# F' d
}' u( j2 P, c* _- ^# x
if(n==1)- M4 p9 G9 Q) q* `6 C% ^
if(a[0]=='1')+ [% w- G% A: t' l) G! [% A
printf("11");1 I% o+ t+ k# K0 }
else" ^7 W' U4 I" E% S! ?
printf("1%c1",a[0]);
M/ l4 H% Y9 f4 m, ] printf("\n");+ d, N, B2 y* c' a! O
} example2:#include<stdio.h>1 X% x& l+ P; r5 I' v5 d- Y1 |
#include<string.h>
9 t( D6 ?: Y7 x! J* K' h# c5 q$ q" cvoid main()
- q* r$ a& d" N( A' r n{ int i,j,k,n;
9 F' v: F, F0 `) u( R1 r V! S: o- y5 } char a[50];! ]! ~* H" M0 [( s: U* S2 e8 h! W3 @
gets(a);5 ^, J' z* i7 Y8 |0 ^2 _
n=strlen(a);' J; ], l' T$ ]# `: v) X- K) l. ?
% w+ W: T5 }: s# |( }3 n, y5 m( k
for(i=0;i<n-1; )
' o" u: y3 R" J/ {) _ B if(a==a[i+1]); l2 P2 y# A* W1 S1 o: \: d
{ for(j=i+1;a[j]==a[j+1];j++);, x6 G% S9 ]( B+ p- ^4 F! {3 f
printf("%d%c",j-i+1,a);4 T7 d6 Z* ^! e& ]- m' k
i=j+1;! B. }& P" g/ g
}
! `7 ^2 d& a% o' V% N1 r% V- ` else' g& Q+ \) i5 P1 i' ?# k! x
{ if(a==1)
9 n3 M7 W, P$ h6 r+ N { printf("11");: x- n! l) p% K1 i4 ^3 U* l3 T- x
i++;
7 D% v7 d6 H% {. @ }
) x Q7 I) ~+ ^4 ?: n! ^$ l else3 z+ D: p" p7 o4 \/ @
{ for(j=i+1;a[j]!=a[j+1];j++);( Z' S0 }/ G- `+ P, O$ \
printf("1");$ ?* q4 Y% o9 Y& g
if(j==n+1)
: [+ {) @* w! i/ n8 A7 @! f! o j--;0 F5 B* T6 w+ A
for(k=i;k<j;k++)
0 B. X+ ?5 v2 f5 L$ f% j printf("%c",a[k]);
5 c E3 k* b' [- A printf("1");
: d) C6 Z0 | w: S; e i=j;
. Q9 w0 R/ b [/ L }1 v6 \( n# y" r7 k7 D) A
}
, g$ ]3 m) Z: I, q+ W if(n==1)
- P& k1 K# P4 G7 @ a3 d+ t4 `0 ~ if(a[0]=='1')
8 J! i5 `# [: f3 b4 k printf("11");2 q* \- F* j; t
else
4 f. M0 Z1 l5 k! R3 h8 _ printf("1%c1",a[0]);8 M$ S0 o* S; K, P
printf("\n");
7 ^) k! J8 n- E0 e# A }
( U' Z* r" u2 {- S: a2 S# }0 o. N- i example3:#include<stdio.h>
7 W& d }9 O( `# Y* n0 k( ]#include<string.h># g: o1 Q4 `: ^9 w
void main()
( R* ^- t/ j5 e+ o5 C: S0 T( ^{ int i,j,k,n;
: O' E0 x' Z7 L7 d3 f char a[50];/ h4 W+ e2 l8 s v" P+ `
gets(a);/ X' D1 P" e" R3 B4 W& t, u
n=strlen(a);
6 P# i3 E3 n2 B! n+ Q! [; C
# p3 I# { @' I7 z6 `6 v for(i=0;i<n-1; )
) c# d0 _+ [: e$ a- _8 ~ if(a==a[i+1])$ b: J% Z6 p& M K
{ for(j=i+1;a[j]==a[j+1];j++);& `3 g) R* o. @2 ]% }% [" q
printf("%d%c",j-i+1,a);# O# M. C) ^+ w, P2 @# t
i=j+1;- e3 C7 \# l8 U4 X M1 |
}
4 k0 ~5 O5 F7 D: @) d/ ?8 u/ E else
D0 j/ l- c# ]) C { if(a==1)8 _- @3 K- ^. Q5 i2 \8 Q
{ printf("11");
8 R! @. P2 a7 O i++;
/ Q/ ?" [: p4 [" J& s; A, D }
, d' E$ }; |3 q; h/ n8 V8 F2 j else
1 i# }/ E6 L) q& z { for(j=i+1;a[j]!=a[j+1];j++);& ~) m x# {* ]" H
printf("1");
! b2 [; A! ~* |9 m+ C, k9 A if(j==n+1), b8 H. K; w/ [* Z
j--;
1 I1 A" P% Z8 j* \ D& D C for(k=i;k<j;k++)
( Q6 ]& \$ M& r+ }& R& V$ ` printf("%c",a[k]);1 A, C' h1 p' d `
printf("1");) l& L3 G; Y2 C
i=j;7 Z6 N- |+ Q, r1 F. j& [& m% d! n* L
}) S8 U3 H; d2 z! }, L6 Q" F
}
/ _: ]" O' b' @8 \0 @# ~ if(n==1)9 K0 m: Q2 J/ Y3 j- s* R
if(a[0]=='1') P5 B' `! n) o
printf("11");4 I$ v7 ?& J1 A- p( N9 }
else
5 U+ m8 q0 f, V/ `: k printf("1%c1",a[0]);4 r9 Q$ A5 F9 l# A1 r6 x
printf("\n");% z4 @* u- _" Y: k: O, X, d
}3 [( F3 K2 \# y4 p
来源:编程爱好者acm题库 |