Run Length EncodingDescription a( x$ C5 |/ K$ l8 d* j% q
) m% G; R! `) ~: FYour task is to write a program that performs a ** form of run-length encoding, as described by the rules below. 0 c: Z2 r) P2 W7 L" \% J X
/ Z0 p4 f5 O3 e/ ` Q
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.
! P0 g& w0 ]) }0 x6 [- r, A" `# Y; o7 b$ o8 m' [
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 / `, F5 X" C; |
sequence, it is escaped with a 1, thus two 1 characters are output.
& Y y ?6 o9 i7 k* ?& r
5 H6 n* v1 i! }7 dInput ' h0 x4 x3 V0 g/ i
5 ` e$ y4 a. j5 q! s8 M) x
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.
5 r( r- i4 [5 V- W: H1 E4 s4 k9 U
Output @6 X2 P' c' x! P' H9 y& D
: `" _; Z6 p: V2 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. : C2 I* k2 R' _$ P1 `& p
& o! P7 z$ E4 l; d3 B. R: h
输入样例 . f0 |5 v" b8 U9 f2 j% m1 X
AAAAAABCCCC
! g. t/ r7 }5 A# p, m9 W; k12344
1 W8 R) K) p* @0 F C& } . b+ c% j, E4 T
. G, J1 L0 Q( u% a4 K' ^7 O
输出样例 ) ^! F% ?" Q3 `* r
6A1B14C
4 G" ]: v, g4 T/ Y11123124" w3 d. r9 Q X2 _8 t/ d" B* W4 Z% L# M
, B! z5 l5 S) {. a" E. W9 P0 P& F2 e
Source
7 k' Q" o$ X' {; T9 m: u
+ \3 ^, k6 j1 zUlm Local 20046 s% h" I: q) h/ F# T& U+ |
% H& V2 d7 {' R1 I* @: @4 ^example1:' k/ t7 v7 z+ d1 l4 {
#include<stdio.h>
8 M _5 e1 i8 Q _3 w* Y9 J% x" Z#include<string.h>8 P' c* k2 \* ?$ v2 o' y( O
void main()
9 {: U$ l9 Z; T" O3 b{ int i,j,k,n;! _: v o/ f, s
char a[50];
/ I$ v! D7 {# t9 ]" B! l8 ] gets(a);
; E; x, a* G3 H1 T2 Y8 u8 u n=strlen(a);
! M$ c. m6 Z1 L5 Z( f7 d1 n% e( R. Z7 T+ ?* b
for(i=0;i<n-1; ): R, R: N: a7 `# Y
if(a==a[i+1])
- W" A- C3 O9 b. p% Q: s { for(j=i+1;a[j]==a[j+1];j++);
+ O' e0 A3 h7 s7 y, U printf("%d%c",j-i+1,a);
/ ~7 P, T7 f9 H# G! j" Y i=j+1;( j! D/ W3 @+ K+ j- H/ m0 f
}4 `0 \9 h6 M9 P# U* d* Z: K' ^+ d
else
& W! w9 U. u( ^& Q; w. S& J { if(a==1), V. G9 I: s. S3 R
{ printf("11");5 b; i& H. a: z- |
i++;. W3 P6 X+ |3 ~" ]3 W) d8 U
}5 B3 J* x$ }4 ?3 o
else
" V: m: r# M; S/ M* Z { for(j=i+1;a[j]!=a[j+1];j++);% Z) r( U* ]0 m6 U. G5 d; O
printf("1");
. K/ k8 {. w; x if(j==n+1)
* I; s4 ^. c! |4 w/ }& m: L j--;
: R y! Q/ q1 d ^: N, e for(k=i;k<j;k++)
# z3 C S8 |- _ x4 Z, s# [ printf("%c",a[k]);
9 A; s) q% O& O# o3 T/ L G printf("1");
! r( V! `$ K6 b5 W4 ?6 L i=j;
' S7 X3 d* Q: Y* O7 H }
# G) d8 W' h, z3 @" V$ X }6 h! u# C; r3 H6 n
if(n==1)4 Z! W* [4 e7 Q* U
if(a[0]=='1'). ^; h0 E/ V' d7 w1 D9 S
printf("11");$ L4 i. _$ ~9 Y' `8 C* S
else2 l ~; d" m) x5 B. W$ w# c
printf("1%c1",a[0]); r5 a0 e+ y9 d ^6 z3 i- T
printf("\n");
5 ` p6 X1 p3 W2 B2 Z5 Q% Y6 y }
* A0 d2 }& z0 f% z& j评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
' z' T( x/ f% H( S4 U#include<string.h>; K+ u: k: u, n8 s, B, Q& M" W. P1 x7 N! F
void main()
% i0 F3 M) m* G: z{ int i,j,k,n;" r& m6 b, m; h0 R
char a[50];
$ W3 r, F3 v1 K' @, ]0 }; } gets(a);
% N9 y" r+ R7 F7 A4 Q' |( x n=strlen(a);& I) b+ s1 @9 i. H% ^
- [9 x: z( X) E( H# r for(i=0;i<n-1; ), a+ n* _$ r0 }, Q6 {. L
if(a==a[i+1])
$ W. D% n( ]" r) F: g { for(j=i+1;a[j]==a[j+1];j++);$ O0 G; A/ b* G( ~) v
printf("%d%c",j-i+1,a);. |3 N7 h; A* c$ F
i=j+1;$ C# W$ A; i4 T" F7 m& ~9 h% c6 s3 l
}; m x( b/ X8 _8 G; J
else& ]- N( L. ~- `2 v
{ if(a==1)
% I! L( ~* y' \/ s( |7 W { printf("11");" k2 a1 T7 o/ P' ^9 ~
i++;
: U+ D+ @7 A1 l2 u, J, m }' ~0 [( i% ^3 |
else9 |, D4 l# K! |
{ for(j=i+1;a[j]!=a[j+1];j++);' s7 {- q) S `, b# R
printf("1");& n1 b3 a- P( n' i6 L- j2 X }
if(j==n+1)1 b$ A+ D- C5 f( I! U7 `& ?. v2 T
j--;8 s9 }- c2 G+ t3 c+ z
for(k=i;k<j;k++)! h( c0 K) d: J) I% E" H
printf("%c",a[k]);7 V) W8 A3 `: B
printf("1");
3 @2 { a6 \/ G6 N: h i=j;
1 p" @) B- k0 R2 ^ }
) A# v W' L3 H& z }6 |5 T- D) v* j8 f
if(n==1)
9 W( s. ?4 W: M! Z if(a[0]=='1')
' w- D4 [! d- X% ^$ o printf("11");% K- R \; n5 E) f
else
* s) C! h, f, H4 q printf("1%c1",a[0]);
( U' A1 d3 C- h$ f0 y% I5 G printf("\n");
: l/ C8 r+ @6 F) O9 s } example2:#include<stdio.h>7 ?" Y( l# T$ i3 x
#include<string.h>! M- p ?6 E" Z0 n5 v0 w
void main()5 W3 o( R; |) a- _ T5 A
{ int i,j,k,n;) w# G0 ~! ~; G; Z2 w
char a[50];
5 f; L( F" M2 f3 x" t8 `8 F: d gets(a);
- ]- S& x7 m1 x) Y2 F/ L n=strlen(a);
# c: Z$ ^& A2 Y6 F0 E/ o5 R
' z3 C! I, @) G1 M& I! H0 @ T6 _4 T for(i=0;i<n-1; )( L5 j6 R% r, [! J8 ^/ X4 m6 V
if(a==a[i+1])
" c( H2 o3 s/ B$ H" w: I { for(j=i+1;a[j]==a[j+1];j++);) y+ x3 K7 \ w) Y# E" I8 G' u
printf("%d%c",j-i+1,a);
6 O. U9 Y+ H: | i=j+1;
7 ^5 ~, b: w) H: k- j }! a) r1 i3 _; w7 r8 A
else
$ B2 S4 j. p& R0 f# U6 w { if(a==1). ^3 L% K7 T I
{ printf("11");& E: N, r3 @ ~) G0 [/ D. Q& D* k. V) ]5 K
i++;
, @0 z9 \% [" u! H* q$ U8 M }
6 M9 K' I2 L5 h% s2 K3 i else5 ?7 j+ a% c0 e' S9 Z) R
{ for(j=i+1;a[j]!=a[j+1];j++);
. J- K! z; @, S# @0 x printf("1");# J' s% h: z$ ~; w1 |
if(j==n+1). o) d' l" s. }! j+ p
j--;
( T# Q H) w7 |( o2 ~( \, n) [" b/ [ for(k=i;k<j;k++)
+ W5 N) Y/ O- f$ W. r9 j6 @, B printf("%c",a[k]);
3 H9 M, f" `5 w' v printf("1");/ {1 c. g% y9 N% y" C7 M
i=j;. V: ^9 u& }8 m+ A, b, b
}
5 d% B ^7 Y6 {$ F# v }" w0 j' m+ ] O* y2 V0 z
if(n==1)
- \5 X, s( [+ }8 _* C. E' V if(a[0]=='1')
, P9 F: A- [) P9 W* j K) w' f8 J3 ` printf("11");
3 n- V0 E+ r" @- \ F3 A else) n7 q$ d3 |7 g% ]7 j
printf("1%c1",a[0]);
, |! a( t. [" { printf("\n");
/ l. Y4 R( l1 \- m6 y }
- {' { u" \" H( @0 a& \ example3:#include<stdio.h>8 d6 N0 Y- h5 m9 V
#include<string.h> @. g' p7 E& v9 [; \
void main()
7 U+ M2 X$ G& G q% R{ int i,j,k,n;
* A1 x5 p3 D' R' [$ X. J. U9 j char a[50];
6 I k& T# H4 Z p3 X1 G gets(a);
4 u/ y( B* f! \1 G7 m: Z n=strlen(a);
. a+ V7 U# f' d) ~0 {' j0 K% n- i% U- U% n- L
for(i=0;i<n-1; )- C f: b8 Y% i+ h0 y
if(a==a[i+1])
2 G# W5 C- `; \2 K& ^ { for(j=i+1;a[j]==a[j+1];j++);( z0 y/ @ N3 a( @: Q- h: |
printf("%d%c",j-i+1,a);
) V7 c) s; E# q# B+ H2 r! m i=j+1;
* M8 I, B( r, n* M6 l }9 O& \4 h- V6 I( I! q* T+ X R+ I
else& T% {1 a8 r' @+ J- U, n# u7 h3 J; p
{ if(a==1)
t, g$ D% t. @8 L- g { printf("11");
9 l: f. C) h& z) a) Z& ^) X4 G) N i++;# Q* o, y8 J0 d+ n9 o/ {8 x
}7 S- p! }' O3 \: z% Z3 c* p& J
else
. j% | S8 z! ^8 M7 Z, h { for(j=i+1;a[j]!=a[j+1];j++);$ e3 p4 r3 Z. Q+ W% w) c
printf("1");% P% H: B7 q2 x
if(j==n+1)3 t9 Z! b5 B& D/ N6 L- V
j--;. l4 p, u: Q7 }- Y: H# s7 i0 g
for(k=i;k<j;k++)
. }& d4 \. @6 Z L* e( B4 @& M5 @ printf("%c",a[k]);- @$ M4 W, k( |* V3 Q
printf("1");
/ x" k0 U2 b3 k' r+ B& | i=j;/ c( g) ]1 k- r1 L, u7 p
}
5 y6 f+ J8 I8 ]/ m }
+ X6 W% e% I& j n8 }8 L if(n==1)
: o7 d8 U* {5 g" {0 m, \ if(a[0]=='1')3 x, J- M, S* W# ?+ \
printf("11");) B$ J8 F, ?& F" ]
else
7 i% w3 ~6 t4 }3 p: k! I. v' w printf("1%c1",a[0]);
3 r" y! L$ j% B/ }+ t) P6 B printf("\n");
8 t6 j' x, ]9 z! F; f! F }. q r6 W4 L- k: K0 E) z4 Z( V" X$ D
来源:编程爱好者acm题库 |