Run Length EncodingDescription
0 j- z& |% b, Q8 L @2 c0 M8 `' R- j2 y9 l- X; |
Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below. # A% {; [9 h q$ a& \: j
0 ?3 |; u3 Y. W$ v
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.
! [+ z6 h7 ]# R8 e: a+ ?( t- A( P
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 - ?8 w: v2 D0 p1 l9 r
sequence, it is escaped with a 1, thus two 1 characters are output. 5 Y4 \. P( y- ?' z, n$ c
: N) n1 g6 Z' b' F' M
Input 1 h/ O0 d; \. H: A% ~
9 P( F: o8 |' G: H1 eThe 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.
' `9 J5 \& F& o; @' Q# P+ T/ U% m
Output
, P T ^5 W! Z8 R2 @7 S+ {! ]' V5 N( t. F
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.
$ C |. K( t' n( z3 ~
, p; k% {7 w* `2 E, Q输入样例
! B* a: |- H7 b9 qAAAAAABCCCC+ f/ a T8 C8 a. E/ B. N3 v
12344
6 L8 |% ?: z* G. n/ n: r3 {& X
+ T. N1 z& o% `- P/ f
5 P9 u8 z$ W8 `3 ]8 J7 v7 {5 W% F输出样例
5 [8 O f7 w- ^ I, I; p6A1B14C7 G2 T$ y* w7 c# w3 r- D
11123124
+ m' X6 R( L& R% u9 K% `
1 ~1 d2 \, m) |1 U: L, A% N5 x+ v
Source( k' ~; l1 X n! ~$ Y
" x1 \% l+ t z, u2 Z) `Ulm Local 2004
- d7 F" O; u+ s; u k$ x- c$ x. p3 l, k k' t6 @
example1:
% l$ w, ]; ], `7 E. Z#include<stdio.h>
l5 b; m1 @, T! s; O#include<string.h>
5 x2 S; { z4 h6 K& D7 Evoid main()2 O0 I* | p$ h# l+ [
{ int i,j,k,n;
0 b0 L6 d- ~; G9 X- l( ?. p% ~ char a[50];( E: M% w; ` k( q& Q" Z7 \3 k
gets(a);
9 j7 P& W) y9 F# l" m n=strlen(a);
6 t0 M% j& y: q" ?. |
5 Y. [8 a: ?9 B; [# ^' c* J S* W for(i=0;i<n-1; )) ^4 [4 S2 L5 \; y8 I! k
if(a==a[i+1])
# a+ s; v" N0 @7 c- _ { for(j=i+1;a[j]==a[j+1];j++);
( T! W$ U) h6 c& [9 \/ t" x; P0 F printf("%d%c",j-i+1,a);
% f9 \ X( a( L i=j+1;! I& B _; w! `) z( ]4 U8 H
}
6 J; J. C5 r! q; w2 ?# w; @7 | else. k; S( l; X; i j4 _! |
{ if(a==1), c4 w; }" @% O7 Y7 w
{ printf("11");
9 T1 n# b% M0 X( d; r+ D i++;
5 ~( U9 L' H" w8 B/ A0 B }
; I; I m$ w0 Q8 B! g/ [# u) u else9 g0 W5 m3 I$ w4 m( C! E+ Y
{ for(j=i+1;a[j]!=a[j+1];j++);; L( A: n8 G5 e, K: _' H% m
printf("1");: A/ [, h/ C# p) v3 L1 L
if(j==n+1)2 f( _8 e' y* s5 B4 v: J
j--;
0 j8 j$ p* z- {, ^7 l/ E for(k=i;k<j;k++)9 A, R* m6 s k* ?6 i* g8 z5 d
printf("%c",a[k]);
& J# A# w) @$ h% X printf("1");0 m2 H/ I& {" a4 \6 v
i=j;
. H3 r/ M8 }. W/ M }8 @, ~& B$ k- y8 ]
}
2 ~7 j- N. \/ w9 }6 y) _5 h if(n==1)+ Q( k. `: v6 B/ n& q p9 @: ~6 T0 r
if(a[0]=='1')
9 X9 }$ A# A Q+ W* U printf("11");
/ r- k* Q" Q- a7 z/ T, s% X# { else2 ` u9 t+ C; p8 c% z
printf("1%c1",a[0]); `, S$ p$ N$ o, R3 B0 ?9 |
printf("\n");' ^6 R9 ^3 e3 Q2 f7 L7 {0 v
}2 T4 D& q; Y! o0 m' D: J5 s
评论人: Colby 发布时间: 2010-3-2 12:04:06 #include<stdio.h>
6 \( b3 H6 a3 X3 }, I# v#include<string.h>
! r. W$ ^/ E. B4 ovoid main()
5 C* A$ \4 e$ G5 j$ v4 M7 _3 M{ int i,j,k,n;
) n9 x% w( m( _3 ?8 X3 @ char a[50];
! h2 R9 `" ?/ D; `3 ? gets(a);
" @; m7 ?9 `( I0 F n=strlen(a);4 F7 j$ U6 s& x3 W( q9 ?0 R' ]
V U+ a) i+ Y$ F1 f' V for(i=0;i<n-1; )$ a8 n4 x7 V) c% l8 E, [
if(a==a[i+1])
' {$ B: F$ H3 Q" | N { for(j=i+1;a[j]==a[j+1];j++);
. ~2 b; g- Q6 o* G% D, D printf("%d%c",j-i+1,a);
7 V h8 I! g' I6 C& V0 f i=j+1;
( p$ a- l/ z, s. t; v8 a Z2 Y }! [( B4 R. S' n" ]0 @
else, E# I7 b. k9 {
{ if(a==1)
% Y) V4 o$ f& L { printf("11");
2 t/ X0 S: V% y: w8 n i++;
|; g/ Y' s% a }( h; f: M; _ _3 Y2 g
else
6 y$ _# `; D9 |( y { for(j=i+1;a[j]!=a[j+1];j++);
- Q1 p% n9 M7 U' m4 i printf("1");( P% u' g" h- z
if(j==n+1)
1 L9 X/ \4 D, D6 Z) g j--;$ D* K) U' P6 `( _* w3 D
for(k=i;k<j;k++)1 R/ o \& H7 v* ^
printf("%c",a[k]);. p: Q7 F! B8 p( j/ N5 P
printf("1");8 o, V9 C a5 l/ r
i=j;' w" e$ O s% S4 f
}
* \" k3 @0 W/ S }
9 F$ }9 s& I5 C& ]5 |( o if(n==1): D$ G D! H0 q3 P% z. S6 C
if(a[0]=='1')$ Q4 Q/ \$ s% K$ L# X6 a/ ^6 `( a
printf("11");
* Y7 G( f; b, a# m else
) ]$ A, D! S- I3 _9 E4 n* ]1 n printf("1%c1",a[0]);! o- B" ]4 Y) A6 j# c3 K* R, O
printf("\n");8 x4 l* v! q" H- H$ x4 k" K6 e
} example2:#include<stdio.h>8 ^1 o8 n' o8 F- L! H
#include<string.h>" v8 Y& | f2 y ?3 \' V6 }
void main()
4 h3 O, W) D; R2 c{ int i,j,k,n;. `" [+ w5 b( h0 m' G
char a[50];
# d6 c B3 O) i. ` gets(a);. x4 N3 v8 U, A+ l3 V/ { C
n=strlen(a);
% i: Z$ w2 m1 f% Q j
- A' Y$ K9 h" |) N' ] for(i=0;i<n-1; )+ k2 [1 U+ r4 W; X2 k) Z* P' V
if(a==a[i+1])3 K+ r0 Y" I E
{ for(j=i+1;a[j]==a[j+1];j++);
, R$ g7 Z- w1 t* S printf("%d%c",j-i+1,a);4 v) p5 P% _" ^" K2 q7 t1 t2 j
i=j+1;
# {5 v( z) n$ R: Z% C }5 D% A) O" Y. Y% ^' v
else
: N/ g/ W! I& l. l! [7 { { if(a==1)
D9 m8 o2 Y4 _" R1 l5 S2 o { printf("11");7 _1 | s( w( m9 O
i++;8 s7 K. b n; P/ A
}: P+ F7 R. t) a7 ~: V( g& M
else# K- X0 `4 `7 \
{ for(j=i+1;a[j]!=a[j+1];j++);( I8 c7 I0 \7 v
printf("1");
! l0 E5 h( u- l: Z" m if(j==n+1)
! W- E1 \+ ^. p, y4 y j--;/ _" \; ?+ i W1 W
for(k=i;k<j;k++)
( f% P! j. H* ~ printf("%c",a[k]);. l3 w- [. N5 j$ ^/ k- C' I2 p8 T* v, I
printf("1"); P# |$ ~5 {) ` E4 E/ K0 c( |
i=j;' ?3 N" I2 c+ h& V1 @
}/ [& W$ \9 O7 k8 |( E1 W
} P& V, o5 b; c* L$ s( q0 w- P R
if(n==1)
9 j, z2 {: X" t+ b: | if(a[0]=='1')
0 \/ h9 b) D4 Z9 z printf("11");9 t0 B" w. m3 N) _; o0 z" G, V6 Y
else' G# n; C0 Z. ]' K+ C% F
printf("1%c1",a[0]);
8 [+ b* j; M0 d i# T$ W' z printf("\n");$ Q0 h% Z3 F2 H: _1 N* c+ R
}8 f( D6 w' r) P
example3:#include<stdio.h>
1 M, v6 P6 v( x( t( {4 j+ T#include<string.h>
' M |0 U% B, O! D( I, X4 x6 Jvoid main()1 c0 ?. D2 |9 v# d
{ int i,j,k,n;/ f! Y4 h* r! l5 ^( E' a
char a[50];
! ?# o. l1 V' c# f. K3 I gets(a);, S- A: n& i- B* g7 @ Z# g/ Q3 x
n=strlen(a);
) k$ u4 B4 m# n$ O7 s2 G9 R" L. @+ s0 I) q* L
for(i=0;i<n-1; )
v& t. n' K% `' R! U+ b) @ if(a==a[i+1])
3 a/ I: P8 n) w" D t, j { for(j=i+1;a[j]==a[j+1];j++);" O& ~4 v/ k7 x6 T( E/ O
printf("%d%c",j-i+1,a);9 s/ x$ Q& A4 x. \5 H& r) P- A
i=j+1;
! U4 d8 H! d, O1 S& s. N }
5 x7 v. Q; w* n* g; P; o% b, Z+ o% G else
7 t5 F1 E; _4 N3 w2 U { if(a==1). j- G" b5 i+ Q- C+ F4 n& _1 s
{ printf("11");
, d0 m. E- g) O Y; l) v i++;
) i, \, g) @; j4 F: H }
: u. G, g2 G( o# ]% A& z else" \! b9 @9 e- P& c) ]
{ for(j=i+1;a[j]!=a[j+1];j++);
) G$ o4 @$ W& ] printf("1");9 \2 D: _ e& Q0 Y% V+ @) i q
if(j==n+1)% u' [0 T+ ^9 }4 \3 [
j--;
6 W4 M; y8 E/ ?( ]9 r8 h for(k=i;k<j;k++)
1 x A+ }* K! R! b$ o' ^ printf("%c",a[k]);$ W, a3 @5 e1 D, R5 t0 q% o5 K
printf("1");9 u0 ?. D" `9 X! e/ k
i=j;# {. G1 @2 A# j
}3 m3 m/ |0 R9 U% z
}$ F8 e, p2 I. v! |# h
if(n==1)0 r* l6 Q" K I
if(a[0]=='1')
% f. m4 V; S( u0 i' q9 Q2 L: Z printf("11");& r2 i0 ^- p2 Y" l G( P8 j
else
& V7 T+ M6 e0 T# N, d" c printf("1%c1",a[0]);8 [; f( |$ A% v9 K
printf("\n");) o. F3 Y" T0 r$ [$ i
}% z% P3 ]( [+ l- C, ]- _
来源:编程爱好者acm题库 |