数学建模社区-数学中国

标题: acm编程竞赛题目2(Run Length Encoding) [打印本页]

作者: 厚积薄发    时间: 2010-5-6 18:38
标题: acm编程竞赛题目2(Run Length Encoding)
Run Length EncodingDescription
* F5 A' k$ C; D7 o" b
* i! [! }* J4 ^5 uYour task is to write a program that performs a ** form of run-length encoding, as described by the rules below.
1 G3 S  j8 Y% u! Q- |0 N+ _& M( W( H. b* X/ s
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.
  Q' G8 v; x) i, [& W6 w  H1 s% f/ o& p. Z+ {: {
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 . q' d2 [, G) e5 L& J& L% f* w
sequence, it is escaped with a 1, thus two 1 characters are output.
8 M0 d1 n; |4 ^: H1 ^9 {! I1 z- ^% }6 Z: W, X$ g3 J7 `
Input
" M/ c* M% A. q  M  v1 u0 z4 A4 Z' Z3 o: W1 j. ^2 v+ v2 {# A+ g
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.
/ H% F: _/ l1 v" w
4 f1 E7 S! O/ u  F: pOutput
* k. Q, w( W4 }0 J+ p, _# J
5 G; I! M' ~# |7 Q$ 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. 3 H2 @+ V& R) Z  ?* u. _* ~9 n
% I) E" j1 b- M; l- P
输入样例


/ m" u" I2 T7 z, {% mAAAAAABCCCC$ w, l( [; Z. B. s  _- O
12344( h! e% P/ O) C  l9 Z1 P

. t( R$ o  Y! S! F0 F* s5 l) ~

" G9 Q- A. s: C& G4 [8 N8 \输出样例


9 @: x5 V6 F& c- j6A1B14C
( x# R, @' e- y% w6 L11123124
8 T  H8 v5 q, I  h8 R

1 g8 {" [  I5 h  u4 S0 k; C
' I7 B7 `$ J( ~5 Q6 m: a
Source: \  B5 o6 N# t
0 ]! l7 ]/ X5 X; _+ s! s9 B
Ulm Local 20047 i' U+ F7 W1 `# a+ _6 H0 N

0 F) y2 j9 f, |8 D- eexample1:! l1 h* D% H7 u' _" W2 Y' i! P3 v
#include<stdio.h>" ?) n. ?/ V8 p; h' P5 U) P
#include<string.h>
" @$ f, d/ [5 P( T% Avoid main()
0 C* \/ _# V( Y1 H9 w{  int i,j,k,n;
( |2 `: l7 e) F' \   char a[50];: n. t. _! V$ H" ^
   gets(a);
8 l/ y6 Q5 f4 a, Y- e   n=strlen(a);' m; g6 g6 A/ m( d% ]
0 `* {% l- p( \# O9 A0 D, c
   for(i=0;i<n-1; )
3 B+ z. d: `  u# W# A8 o      if(a==a[i+1])" `0 k6 F" a$ {! {
      {  for(j=i+1;a[j]==a[j+1];j++);
# }6 F/ m, i6 H- h          printf("%d%c",j-i+1,a);9 b) @+ r+ s  }0 f/ s
          i=j+1;) r2 G" O* O* r, N! [6 g3 L9 a
      }
6 _. Z6 w4 h# @3 L. R      else" N) d1 i4 ]/ [8 Z1 @6 a
      {  if(a==1)
5 G" G5 @9 y" Y5 h            { printf("11");/ K4 j) c8 O! l
                 i++;0 O) U  e  Z" |9 H% a1 P
            }
. E8 ^- x4 T/ \: N1 T          else
9 p; p/ s3 G+ c5 \8 n( z# Y: Y          {  for(j=i+1;a[j]!=a[j+1];j++);
1 J" ~: e7 j4 e) v7 o              printf("1");
% p7 l9 n3 O( ^$ U6 J3 z$ k              if(j==n+1)& h; T3 I3 k- x- q, `1 S4 C5 i
                  j--;
: {& `% Q" N/ J" A7 U1 Z              for(k=i;k<j;k++)
1 ]1 i3 }( G* z1 C                  printf("%c",a[k]);) Q: w4 T/ x" Z  v: v4 f2 D8 _  [
              printf("1");* {0 h9 f5 r, A- V3 D, q
              i=j;( I# ~, V0 @' _& d+ q2 g
          }
3 G1 X1 J7 I2 ~$ ], ^& z      }
% D1 h) r/ e3 D4 E9 P4 V      if(n==1). @) O* Q1 q+ |! |, O( y
          if(a[0]=='1')
7 V3 [2 J3 [# t3 A5 u              printf("11");
: t! b* F; N4 z8 W6 G- ~          else
4 \4 R- @; U8 K$ t: j: l              printf("1%c1",a[0]);
2 j8 ]- o% `- b2 e   printf("\n");% K% L6 p$ j4 @0 X3 @/ Z
}2 X& k; Y: @: Y. W
评论人: Colby  发布时间: 2010-3-2 12:04:06 #include<stdio.h>
% @* ?+ y/ N; s, q+ i% d% ]: V#include<string.h>" L. N; X- d( }, F: u) H
void main()
8 u# }6 S% t( f& A5 t! X{  int i,j,k,n;, v" J% r( J7 V3 i' u/ R! M! E
   char a[50];& @, c6 x) ^; G3 p6 }( P: E, q
   gets(a);5 Y+ e  s9 n  t, e
   n=strlen(a);9 t' w& {) H5 y: P5 m* y
! B6 H8 p9 K9 C% E+ {# L+ R
   for(i=0;i<n-1; )
4 j# b* k' [& [5 t5 d4 y      if(a==a[i+1])
8 L) `- g! r. x& Q  S      {  for(j=i+1;a[j]==a[j+1];j++);
7 ]+ U2 x% I6 Y$ w7 P          printf("%d%c",j-i+1,a);
' M2 R$ N. V, m' ?3 ]* D0 i0 D          i=j+1;8 T+ ]6 E: T: B* s; n
      }
+ A9 w; a7 d) V0 H: {1 m& x, P      else
2 u, i( `- z2 s      {  if(a==1)9 [. e; i) t' p9 S; C% r: T& L
            { printf("11");$ Z4 }# [  p! I# g- d. Z
                 i++;& a* l; l% e2 C! [$ {
            }
/ S% N4 E) D+ c$ G- |          else9 Q, u! h2 c5 _0 Q
          {  for(j=i+1;a[j]!=a[j+1];j++);
0 j2 |1 I4 l# }7 l: ?1 f              printf("1");  |9 w3 @: ^* {3 S
              if(j==n+1)
, S) [4 z% Z. x8 \' A$ a4 V3 R                  j--;
% A. P3 p' v) i9 [$ @              for(k=i;k<j;k++)
3 Z- c. s3 i8 q# a- e                  printf("%c",a[k]);
: ^8 ?% g. }/ r% P/ M              printf("1");
1 ^- F' R7 m6 I  s5 G6 N; s7 h              i=j;
! g9 h( h! G. m! x* G* A- f          }% P- z3 o% g! Y' Z( K) b# R
      }
6 T0 R. k. |: f( r: D8 _      if(n==1)% d8 H0 n5 l( l2 R
          if(a[0]=='1')
( ]3 u) J) D- I. b6 A, D              printf("11");. j, P$ H7 y3 d5 Y, g: t9 I# s
          else
% P8 L) k8 G. C0 L9 R! P7 g              printf("1%c1",a[0]);& i4 `! W7 x3 `2 H; M; @; {& T5 a7 `
   printf("\n");
) A: _6 W7 K, e0 C: t" }# {( B }    example2:#include<stdio.h>3 f- O% `* O3 y; d+ l7 \; C
#include<string.h>
/ `8 P2 n8 ~" |* ?4 Bvoid main()+ H; q! w; l) s( ?
{  int i,j,k,n;5 U+ f6 R! Q+ d( T
   char a[50];
! D9 e$ p8 ~5 c; B0 ?+ ?$ a1 Q   gets(a);/ ?, d4 G/ L( q# \2 J" r, r
   n=strlen(a);% b: D( e- R! e+ e" s0 F2 G. }7 V3 S
& n/ e# O' d* ]5 u
   for(i=0;i<n-1; )1 e3 m, S7 A# Z  S% k) o
      if(a==a[i+1])
, D9 ~( R5 Y' D; r5 J3 o      {  for(j=i+1;a[j]==a[j+1];j++);! \' {( R6 E; ?: Q9 o- }1 s
          printf("%d%c",j-i+1,a);
( k: C$ K7 }! s: l3 ]& o          i=j+1;
2 N8 b. E4 l& Z( U3 r* d      }
5 D0 c) F" L- m4 X" r      else. U/ P' m, l3 J& N1 G3 m: K% N
      {  if(a==1). S% L  ?  r; K1 D4 ]
            { printf("11");
( Y" |: z) l/ a  ^3 c                 i++;
, `: e9 |5 m- f6 u            }1 [: A: m9 G; h1 S
          else
5 a9 l' ]" f- x6 ^" P! t1 t. j9 ]          {  for(j=i+1;a[j]!=a[j+1];j++);1 }# [+ c1 R5 K+ p. P4 ]0 O
              printf("1");2 t6 Q& G3 J. h0 h
              if(j==n+1)# w8 c7 n3 F; S  R4 _1 w/ M
                  j--;
# i+ g& S" E+ Z- g              for(k=i;k<j;k++)
: @5 S% P8 A, s' S: [                  printf("%c",a[k]);  z8 S: o( g- A  @
              printf("1");
# P* k- B( F8 K0 w2 T9 d              i=j;
7 L& \0 @" K7 I- `. @          }$ Y* h' G( t# [0 [- }  t. ?
      }
( i% D! e3 W: S$ @      if(n==1)
( z( A8 _5 Y& W; d2 r( r          if(a[0]=='1')+ a  O5 N6 k$ R& Q. A
              printf("11");
9 m) }/ e4 E9 X$ a          else
' Y4 u) v% w, \) K! M  T5 t              printf("1%c1",a[0]);
& Y) ?& `6 o* V( d/ N   printf("\n");
* P  m  C. ?4 U }" V  p. R2 _4 e+ L; b) D
   example3:#include<stdio.h>
. d& S2 b5 D9 s  g$ h: O* @#include<string.h>
# X# b' t( Z5 W1 |void main()4 k; h+ @% O1 Q
{  int i,j,k,n;
7 G; e# }' {9 p( M$ z6 G   char a[50];! w8 u1 L7 `( ~$ I0 E  g, U
   gets(a);
% }1 ~' t$ o  v' e, f% H6 |% a5 V, j   n=strlen(a);
  \' R* |* M& U8 H. q- d# ?1 z4 a; g3 T  u( j
   for(i=0;i<n-1; )
' ]3 n- T8 m7 q( G1 A$ X$ @. C: Z      if(a==a[i+1])" L/ i6 H; |$ I* [: U0 ?% \
      {  for(j=i+1;a[j]==a[j+1];j++);3 n; @% \/ o6 a
          printf("%d%c",j-i+1,a);
  j+ |1 a* u7 C2 j& Z          i=j+1;8 K  A6 b* @* K4 ]: _5 ~* _/ [
      }0 m5 A' P1 z+ D: s
      else
* T6 F3 i- j! j0 n' O9 z      {  if(a==1)
% I# n; i( y0 d6 ]3 v            { printf("11");/ \- i. l  S8 \4 H7 t5 `2 p2 q$ \
                 i++;
9 V4 M9 E& d$ y0 e3 }            }
5 i7 e7 Q7 c! b+ z          else6 C% _9 p& J5 {2 v0 c- b
          {  for(j=i+1;a[j]!=a[j+1];j++);
# S# H+ b. V$ a7 P( C) V; a              printf("1");
- o1 w) Q3 e2 v+ M2 V$ y( P              if(j==n+1): E( h, C  u. ^  S( ^
                  j--;
1 w" K* \7 k9 o. w& ^5 n' m              for(k=i;k<j;k++)
, w& |# G; X0 |7 Q+ ?- ?! i/ a                  printf("%c",a[k]);, Q5 T: D  y2 h; G/ O/ a; m: H; M. q
              printf("1");% [" `1 J1 X$ k. p9 h6 t- Y
              i=j;) B; K1 I" L1 Z
          }
0 `) A* b/ ]# h" {; a5 q      }# W$ ~" d* a* i3 o5 Q) u
      if(n==1)1 q, ^( |, Y9 G5 w4 c; G" l+ ?
          if(a[0]=='1')8 ~( [! g) }* F4 g8 S
              printf("11");& `" ]6 }3 ^+ V4 N: x' d% w
          else' K7 M/ X! W1 W2 C0 K& \
              printf("1%c1",a[0]);
0 t; X5 H) O+ f& T- ~4 W$ O   printf("\n");5 o# p* [9 f0 b* Q- X4 `
}8 J  ?( A+ n* z/ \
      来源:编程爱好者acm题库
作者: qnbs1    时间: 2010-5-15 17:58
最好附上中文翻译嘛....很不起  难看
作者: Jackge    时间: 2011-11-20 21:48
顶楼上……
作者: dahai1990    时间: 2012-2-5 15:38
虽然没看懂,,,,
作者: qazwer168    时间: 2012-2-6 10:23
关注中!感兴趣的朋友都来说说




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5