数学建模社区-数学中国

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

作者: 厚积薄发    时间: 2010-5-6 18:38
标题: acm编程竞赛题目2(Run Length Encoding)
Run Length EncodingDescription
! g" L, ]6 i% ~9 P( z- l# A* q  k3 m# z8 C( K
Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below. 0 b( ^7 k" u6 a$ k1 \/ i& x

) p+ D+ V$ E! M" Z  J0 A7 y7 G6 T+ ?  rAny 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. & D" Y- U( h* ^+ ~6 u1 q* H8 E* Q

  l& E0 \4 O: ], ]1 U8 [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
+ m- H* G6 C, i# v" K  m, R9 L% Osequence, it is escaped with a 1, thus two 1 characters are output.
7 H1 B3 x7 f4 k5 [
( \% _8 Q; Q3 c" ~. a# WInput
' S* H/ B' w: I& `2 w7 a" U3 d
1 a# E  d# ?+ c) \, k1 u2 [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. ' C; F. y+ g6 b# z. E

" M) y, ]) a0 @" x. P: y$ ~Output
( u& q* H, u$ V; P/ U: K/ r9 @2 _6 G1 \+ |( ^( t
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. 7 a+ |/ H" r6 Z( p& {

# l% q9 x4 j; F输入样例


$ X% {! k# T2 i4 i( ^! O$ ^AAAAAABCCCC: ?: X8 y* Q  X* s2 k9 i
123448 u5 F0 j) W& X+ [- E


1 E6 b) Q. M2 M8 e1 w; p4 z' A. Q% z' e3 I! J8 ~
输出样例

) B5 G  ?# h( t/ A6 S- T
6A1B14C2 E. b: z, m# e* h
11123124
8 G3 h5 ^, w$ U


) G+ D  n" ~- y% e- P1 E* Z" \" k
" Y5 J& |5 H/ T" lSource
1 x' M4 L3 Q9 C2 G0 g$ _  U; A1 K) ]$ V' l/ P& `
Ulm Local 2004( K& h% ^4 I( l$ |# p

/ j: r, B% o- r, [example1:
% W9 ]$ z* n7 H$ p- ?3 l& z#include<stdio.h>; ]% W: V5 ~" k2 i. i
#include<string.h>2 k5 |: G* Q; `7 r% n( X" K  }
void main()
2 s& `: U( ?+ h, v; s  w" {/ N{  int i,j,k,n;0 w0 O8 N$ A! p& ]
   char a[50];
9 P- S3 Q  l. k$ E   gets(a);
: i4 X3 Q- W2 @, \& s   n=strlen(a);
* w, p4 u) f( P8 H8 N* H
5 g6 h4 Q' n/ O  G! T2 C   for(i=0;i<n-1; )1 w1 T* z; B9 k
      if(a==a[i+1])7 Y4 u' h& X7 N( l% d- B' y# c* z
      {  for(j=i+1;a[j]==a[j+1];j++);
8 y; c2 T- a; b5 v* M          printf("%d%c",j-i+1,a);
7 I' w8 ~7 d$ u" ]2 ~7 ]( z, @8 o          i=j+1;
' x/ j1 d" o) a7 r5 g      }
) J: U+ c4 J' M- E1 F; V8 |# z; [      else0 Z! c, |8 r! y! O) q+ j/ u
      {  if(a==1)) B2 [8 ?. |* l
            { printf("11");7 u& w" N/ R/ ~" u/ C) c& K
                 i++;
/ @/ W2 {/ x- T+ m5 ^. h8 _$ i            }3 p( |9 F9 B; a" w+ m
          else
. B# U2 Y* g( ?2 F          {  for(j=i+1;a[j]!=a[j+1];j++);, E8 q1 O. d; ^# _# v* r& j
              printf("1");
. z% U# O! ~0 x6 X$ Y- A; X" r7 _# F              if(j==n+1)$ y7 f7 W% b4 T; \+ _: Q
                  j--;
6 s8 W, ?1 f6 ]- E              for(k=i;k<j;k++)) O4 v& W  V9 b3 \* }
                  printf("%c",a[k]);5 I; Q  Z6 @! \# g5 M
              printf("1");
/ [7 H+ o. w* z              i=j;
& m: a% j' d. k. [          }, }7 b0 G# n/ b. D
      }
8 z; J, {) l# f  |      if(n==1)# v# x7 r) R5 q) d9 G( b  W& A
          if(a[0]=='1')
* }' c! J, u2 m; e- Z% Q+ J              printf("11");
- m9 b9 C$ n  F8 m, f1 M          else/ T- ~/ o! U3 {
              printf("1%c1",a[0]);
! o8 K+ R% z* P, i   printf("\n");
6 P: c2 ~% G3 N }0 c1 e5 _+ m' K' Y% q9 u5 j+ F5 c
评论人: Colby  发布时间: 2010-3-2 12:04:06 #include<stdio.h>
4 t; m0 J( M6 I#include<string.h>7 T. Y: {: S$ a6 X: d' Q% E$ v
void main()& ]; i& E3 j1 l6 M& O
{  int i,j,k,n;6 X. @" H3 K' Z  x
   char a[50];
2 H! E  V2 O4 a. ^. S: g% ]1 T   gets(a);
: K" V5 p( T* W; H   n=strlen(a);
, w7 g( t# c$ K" `8 v
! H/ W) k1 x; u- u4 t. _/ ?   for(i=0;i<n-1; )
( V8 ^4 s) N$ n$ u6 {1 P      if(a==a[i+1])
$ d' N5 a: L7 L0 v+ ?      {  for(j=i+1;a[j]==a[j+1];j++);" o' u+ E: Y+ u% h5 t% k
          printf("%d%c",j-i+1,a);' G# O6 |# p5 I. x4 {
          i=j+1;
1 W) V0 i, p$ D0 b- `      }  M' U) {! a! o9 r8 ?/ c
      else% ?* n$ w& ~5 Q1 ?7 q
      {  if(a==1)' _( l- Y) \( M* z
            { printf("11");
- f, C1 w" F1 `! f; {4 \+ ]                 i++;
  ^. w$ n8 I1 P' M/ y1 n            }& c! A. m+ |8 W
          else0 |1 X* U0 f" x8 ?- V- t9 W
          {  for(j=i+1;a[j]!=a[j+1];j++);
5 p0 I, Y+ \, N: M9 d' _- S              printf("1");
# y' _! K( y& b6 J0 u2 j              if(j==n+1)( {+ b5 Q8 O; O0 S
                  j--;
0 c8 q' t. P* \+ ?% [              for(k=i;k<j;k++)" s7 A0 M* p$ m% M: o# `# f* |7 E3 X
                  printf("%c",a[k]);, U6 \/ I: t! k0 Z# ^
              printf("1");1 q  ?; i; a% Q6 Q
              i=j;
+ E( n: ~2 T' u7 c7 Q          }: Y) \3 A* r' C1 h) k" @
      }5 V. _3 |+ h4 K8 E# ~& z  G
      if(n==1)
9 X* y" z4 A- W+ b- b; x) g          if(a[0]=='1')- o0 n" G- X  \. }/ ~
              printf("11");
5 M0 j( u2 C* L/ g% P: |          else
4 b# i+ w( A, i0 a% w/ L4 D; O              printf("1%c1",a[0]);
+ W! Q8 W# [0 k" s   printf("\n");
& S! I) x/ n+ S9 F$ x8 C$ M }    example2:#include<stdio.h>& H$ ~) _/ W9 l% q& w
#include<string.h>
) I$ ~. D2 R1 H: D+ t( Wvoid main()
3 s: S5 j& D& O$ B# N{  int i,j,k,n;
3 r. }; _4 r2 |& D' Q   char a[50];* f2 J" C9 N: W6 A0 C6 h
   gets(a);7 q- I  j& B  q5 b
   n=strlen(a);( t  p5 R% Q: `" M

: j; Z/ _) \1 T) Y- B) R   for(i=0;i<n-1; )
7 x: L- X/ O& [7 f      if(a==a[i+1])9 [4 r! w! R8 y3 c9 R( o# E  M
      {  for(j=i+1;a[j]==a[j+1];j++);! c$ P0 I: c' B3 M# T8 D8 ^  @" {
          printf("%d%c",j-i+1,a);! W6 q4 |( z: Y* h! x/ A
          i=j+1;
* I) z! b) S: v! o      }/ {9 Y; x# w& E& H( g7 I
      else
# U! T6 L9 ~, W! |0 {1 k4 m# T6 g# Y: x      {  if(a==1)7 ?5 r  n, t% T
            { printf("11");
' F% p3 S6 Y7 Q$ h3 k, w                 i++;
7 P% k0 Y: |4 m# \            }
! C. c* a2 p1 v4 I+ j          else" K" F  L+ f6 W
          {  for(j=i+1;a[j]!=a[j+1];j++);3 T9 K0 ?: T4 a  p+ f' e- q+ z2 g
              printf("1");
$ S3 E2 I* h. j/ X+ H7 e* Z* O' {8 p              if(j==n+1)
% B9 h6 J  R1 P* l                  j--;
' L$ q3 A0 ~, |; v" g$ C* a              for(k=i;k<j;k++)0 ~* w9 x  q) P9 R
                  printf("%c",a[k]);; M/ r9 C) N% r' k& M( L- J$ g# q
              printf("1");
. l- v/ e# ]' z, t& R1 d6 o% u              i=j;4 m% I+ W" ?; W6 g% ]
          }9 H5 v' }& Q: X0 ?; F  r
      }% {8 ]4 k0 |! r, D1 y( M8 h
      if(n==1)( Y: o1 |4 d# c% o; o
          if(a[0]=='1')) o( i, |8 P' [* W
              printf("11");
" r, Y- p3 u2 K1 L3 L  \1 }# {3 e          else
9 y2 N! F( S# A8 Q# C2 v              printf("1%c1",a[0]);
/ q# _; I3 ~1 K: g   printf("\n");
' K. Z9 f5 C. R$ ~- } }* o) r" k+ `, `  T5 ~& [
   example3:#include<stdio.h>9 _( [* ^: L8 k4 `5 m
#include<string.h>% K$ s$ x! X- O$ X
void main()3 p# V( _* k9 o* t) G
{  int i,j,k,n;+ M$ v- j9 R9 b( ]7 ^
   char a[50];! N# i# ?5 v2 ?; O8 G3 q2 \
   gets(a);
9 J3 M  n( U% V: F8 K   n=strlen(a);6 G' j4 c7 n) s5 d& ?  Y
; @, b. o5 d6 a6 z9 |8 q% Z
   for(i=0;i<n-1; )! G) |3 I) T+ P! r- r* n2 c4 }: y
      if(a==a[i+1])
# ^% L5 U. E- ]. u4 v. ]- v      {  for(j=i+1;a[j]==a[j+1];j++);
4 ]5 a* |' o+ z          printf("%d%c",j-i+1,a);5 E8 y- @( P4 X/ N3 {" @* V7 ]
          i=j+1;
# d8 v6 d# q  Y* x" [: }& g      }
$ y& |2 F% C9 B8 a- Y( c      else, }7 b7 C+ ?1 I: v0 U8 r
      {  if(a==1); g! }6 y: a- l4 c4 M+ s9 d
            { printf("11");
5 Z; g% J, z; l% e1 z                 i++;
$ ?, O( `7 a: q: Q            }" y% {% D5 t- a) i* [0 t. t, a
          else  b3 m) h4 K2 x/ |. h% v5 p
          {  for(j=i+1;a[j]!=a[j+1];j++);' L9 Q6 Z* j+ x( J5 ]. \# S
              printf("1");$ A. K2 U9 F8 a6 @4 I/ N6 q
              if(j==n+1)
# I' k& L1 q3 E5 d1 T                  j--;
  U  `) ?0 j$ Z* _: B              for(k=i;k<j;k++)
* j( g3 m  c; J3 J                  printf("%c",a[k]);2 c* i2 X6 y; e& o$ N0 S
              printf("1");& G# ~, d# g  u" s6 H- H4 i3 j
              i=j;
* Y, O$ R/ `7 _! M. T( j          }+ B$ R; D7 [& ^& S! o; B% e
      }- T- E7 u' C- g4 _* n0 p; C4 S
      if(n==1)! S+ K' |$ E9 [- n0 O
          if(a[0]=='1')2 i$ Z, Z* M& `$ Z
              printf("11");  M3 x( N8 J% A
          else( H" c) `) k3 l1 O' ~, b) Z4 \
              printf("1%c1",a[0]);+ Z) m' ?% k% r7 u; T- O8 N
   printf("\n");# d+ g" M" C, D3 V& @. K
}
/ D' Z+ ~+ k4 H1 e, {      来源:编程爱好者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