QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6521|回复: 4
打印 上一主题 下一主题

acm编程竞赛题目2(Run Length Encoding)

[复制链接]
字体大小: 正常 放大

1341

主题

738

听众

2万

积分

数学中国总编辑

  • TA的每日心情

    2016-11-18 10:46
  • 签到天数: 206 天

    [LV.7]常住居民III

    超级版主

    社区QQ达人 邮箱绑定达人 元老勋章 发帖功臣 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组2011年第一期数学建模

    群组第一期sas基础实训课堂

    群组第二届数模基础实训

    群组2012第二期MCM/ICM优秀

    群组MCM优秀论文解析专题

    跳转到指定楼层
    1#
    发表于 2010-5-6 18:38 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    Run Length EncodingDescription
    % |5 P& O0 O) ~1 M9 `+ u8 F4 r" N. `1 s" l2 G/ @4 y# Z
    Your task is to write a program that performs a ** form of run-length encoding, as described by the rules below. 9 b/ Q% V2 o6 F
    4 X$ v& H8 ]& y" c
    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. 4 P' p. k. K$ i8 l/ |

    * o; D4 O9 e7 L  T6 I% b- E  MAny 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
      J- y$ [9 w. [: ~7 Z2 Esequence, it is escaped with a 1, thus two 1 characters are output. 4 }4 i& Q  @. R  h  {; X1 \

    & [! N( J8 Z! H# g0 p& NInput
    $ s  v+ _+ p4 x, F# \  n
    % g0 n' J) ~4 B- k- ~% P0 RThe 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. , D* X. I6 i. r' T

    ) x+ a7 p$ K  k( }Output
    3 o! i( |- T9 O2 R6 e7 D9 r7 m" m( i
    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 h, w: V: z9 I% j/ A

    $ E1 u! a& Q4 J+ R/ n输入样例


    0 n0 \  [7 F! R2 C# V' M6 q% d0 u5 YAAAAAABCCCC
    ( U& c* i7 M' y+ T6 s123444 O* W9 `, K* s


    / z/ E& m! r6 F5 t# s
    ; a, x( _9 b' R$ c" L( K  x' {( e  f输出样例

    * V- f. r; `' g  r
    6A1B14C
    7 c2 u" j  X; {9 V11123124) A* `% A/ i. t* u+ ~

    , H4 J7 V$ q. m8 ?

    - o" \3 E" F4 B( z6 D& J/ T' J& FSource6 d. i; L4 g# B$ y' F# h
    1 X  z' p! b& h$ i$ M9 U
    Ulm Local 2004
    # k9 m' N  Z1 A: D' S
    : M! k4 p3 e8 h5 q( ^0 m' {example1:! a1 `. x  s, t; l3 j/ \! L
    #include<stdio.h>
    . I8 R: N0 Z" @% `# ?#include<string.h>
    , x! B3 @- I% ~; ?$ V1 j3 vvoid main(): }: U  c& ?, S4 M: X( Q  m
    {  int i,j,k,n;
    * |7 }" L6 ^) U8 S) x7 U   char a[50];
    ' t9 \' M- ~7 O& a( K' _   gets(a);$ a5 O/ H8 f: s* a6 u
       n=strlen(a);
    $ N0 p& I- b6 j1 `4 y: n; E0 f0 X- l" c. s& `5 |  W' N2 X
       for(i=0;i<n-1; )" ?* ^3 h7 V5 ~" v; t$ A4 K
          if(a==a[i+1])# g: ^6 k% i$ m  B9 g8 f
          {  for(j=i+1;a[j]==a[j+1];j++);
    ' z1 O+ ~$ X! T' c$ ?4 o6 g* T          printf("%d%c",j-i+1,a);
    2 R9 B9 W* ]% {  t. z, K3 n0 c          i=j+1;
    4 M7 l9 Y& A4 N5 X( K      }
    - K* |4 n4 ]7 {+ v* \6 i( z      else4 g4 B8 W7 a+ F7 C" @* c9 O9 `$ n
          {  if(a==1)
    ; A; r" p8 X+ g4 V) m2 ~2 O            { printf("11");
    0 W' b( M0 t0 C' d# k6 a* n3 w                 i++;
    9 W7 N% k7 h, e: {$ v2 ?6 I            }
    ( d" p( r' W: M. O8 y; b6 v" @          else2 o; D8 Y4 E4 O+ P& P  J* l
              {  for(j=i+1;a[j]!=a[j+1];j++);1 t% Y" S; K6 r6 \
                  printf("1");7 G& n/ y* f5 v# S
                  if(j==n+1)# {$ `: i* R& d
                      j--;% ]4 ~2 P% d' y  x; d6 V1 M
                  for(k=i;k<j;k++)1 G& Z9 j" C( a+ ?$ p! Y/ M* \
                      printf("%c",a[k]);
    , S$ p( b  h2 [* b, s# m              printf("1");
    ' i) m' ~' |/ t1 o  M              i=j;
    4 {7 b7 e7 z; u7 C          }
    3 j9 l3 g) j/ \: l3 \; ]/ X      }
    2 T/ }3 S1 {, {% S      if(n==1)( t8 g* [" l* e! O$ D
              if(a[0]=='1')6 {! S8 r/ f6 R  i9 p, b/ }
                  printf("11");# Y! G! o% Y/ j5 G, }( C
              else5 S, Q. k' N; _3 G1 a8 t
                  printf("1%c1",a[0]);
    4 h  ^1 S; \' _* o  S; p: |   printf("\n");  U/ O7 W5 V6 \# S3 I1 F- J
    }
    5 A9 f6 j; n& U- F5 N! S评论人: Colby  发布时间: 2010-3-2 12:04:06 #include<stdio.h>! s$ O$ x2 q$ j) O
    #include<string.h>7 `! h1 R' w& Y8 E3 N
    void main()5 m$ s& K+ s, N* t2 u$ M
    {  int i,j,k,n;: R+ f' T- A' H: B" ]; l3 [! {8 E
       char a[50];) }) z8 |  h" c: A2 X
       gets(a);& f% n  j5 @, O# N$ O; S2 j# n$ U
       n=strlen(a);# T! `4 T* R, E8 w8 {$ ?' n
    6 M* u# Y, @- I! G6 [
       for(i=0;i<n-1; )
    4 y: |8 r, }  h      if(a==a[i+1])
    . d3 G0 d7 j' V" J% J, v% F      {  for(j=i+1;a[j]==a[j+1];j++);2 [( r" ~& l, E2 J9 }# p& i) {4 n
              printf("%d%c",j-i+1,a);% }. j3 Z3 k( Q6 R: _" {
              i=j+1;' E) p& V: k8 l4 w* W( X
          }- B! ^; X! T1 S# f) v9 A0 C6 t: {
          else- U4 ~! I* m1 a$ B
          {  if(a==1)
    1 A4 _2 r/ d+ F            { printf("11");
    ' A+ i% q; h2 ~5 S                 i++;+ ]* e1 G1 n4 D" M0 k
                }/ y7 U( G4 Q$ t
              else
    ( B+ @! m9 n; U/ l! v6 |          {  for(j=i+1;a[j]!=a[j+1];j++);
    7 y5 v4 j. K8 U7 b              printf("1");: X9 L, y! A/ i* o
                  if(j==n+1)
    + Q" U+ P( t, `4 ], V                  j--;
    6 O, D  f9 W% j              for(k=i;k<j;k++)
    8 j0 G1 ~: q# F9 e8 z' T  o                  printf("%c",a[k]);
    ; z( Y& K/ v$ H; p. L& e              printf("1");$ N+ G) e4 v6 T. K' r# \
                  i=j;6 V% r9 u/ G- }% D. D
              }
    / Q! `" [" k) S      }  w% j; z, _6 N( Y
          if(n==1)
    0 g/ C( w. r0 c  t$ A# O3 ~: {          if(a[0]=='1')
    - O5 r7 v$ V, O" ]$ e3 ~. }$ v7 o              printf("11");1 t7 _, }* E8 R1 V) C
              else% u# m4 K8 M2 t' s7 b3 s
                  printf("1%c1",a[0]);# |6 z+ m" y6 K" h7 g( f
       printf("\n");- h+ Y4 y& N  W9 O  b0 d* X) J7 }
    }    example2:#include<stdio.h>
    # q( v( J6 S# W1 N+ Y#include<string.h>! }* q% {2 O* @1 H# q- j
    void main()0 `" p# @% X- `. C) h& Y
    {  int i,j,k,n;, p" E/ ]: i# z( W) x
       char a[50];
    6 p9 x5 x, Z+ c# T8 x# k* O   gets(a);
    7 ~, i. W$ y% Y: e6 r, r6 j   n=strlen(a);
    7 o  o, N( Z! `1 h9 [
    ! M1 I4 B7 H' c3 x9 Z! p" x3 L2 g' }. P0 {   for(i=0;i<n-1; )
    5 x' s4 z  ^, ?4 y2 B. v      if(a==a[i+1])
    8 ~& |. U7 S0 T4 {      {  for(j=i+1;a[j]==a[j+1];j++);% a- F  V# j; m- H3 M* o
              printf("%d%c",j-i+1,a);
    . T. b7 N  j8 ]( A          i=j+1;9 Y% B7 Q& h9 p
          }* I9 p1 v6 ]% A+ \  u
          else
    , v% Y( _3 I3 H- J7 h2 d      {  if(a==1), j8 t# `' `2 J2 m# {/ f
                { printf("11");
    , Q0 E- C- b6 ?' G- L# i$ u% Z                 i++;2 p8 J/ {+ d' k8 N- r" W' W
                }
    ' k" x3 Q) ^8 _" n# M+ ~9 t          else
    . Z3 U+ ~! n% m. Y          {  for(j=i+1;a[j]!=a[j+1];j++);
    , |) Y" y3 @5 y/ f6 c              printf("1");
    : Q* N* R/ f& {8 A. d9 W              if(j==n+1)
    ) j7 K$ M; [- P; h6 g+ ?, I7 R                  j--;
    9 s' m- e9 v  y1 g4 V: p              for(k=i;k<j;k++)+ |) o& ?2 l$ e9 l* r6 t+ }3 z
                      printf("%c",a[k]);# W7 P2 O/ M9 U1 X2 _0 H0 _1 s( U/ l
                  printf("1");+ x6 l3 T! r* m1 t0 ]1 _+ z
                  i=j;5 ~4 k4 Y; @' h
              }
    ' H9 p0 Y1 Z/ Y) B( x2 s      }( K+ o' a: w& G+ M" y( U
          if(n==1): B1 p* M; M6 E( H: _! P5 S( i' X1 e
              if(a[0]=='1')4 M4 T- [3 [2 Q. M
                  printf("11");
    ' J' d5 F, s: c1 e! q# d" S          else
    ' F  E, I+ @& E# U7 l* {              printf("1%c1",a[0]);) G( |0 m& e# H8 K+ j$ s/ {" |  N
       printf("\n");; T$ o' `4 |* ?& z1 B
    }
    * _( ]5 c6 F2 V) o: ~- v   example3:#include<stdio.h>7 y. P1 m5 L: P4 _$ m$ @
    #include<string.h>. \$ T$ O- Y1 @4 z- H# G1 h$ d: ?2 m+ L  t
    void main()1 B. B$ c# _/ W
    {  int i,j,k,n;2 j* \0 Y8 k" E; L: A
       char a[50];
    ; n! R8 [) k/ Q+ {7 u& n& S0 U   gets(a);
    7 ]8 p" ?' \2 Y% O  ]   n=strlen(a);
      `1 W7 K& A: t5 w3 _' |1 ], n2 |7 N; F7 F2 B0 t$ B+ w! a& n
       for(i=0;i<n-1; )1 {3 I8 }  m) u* |$ P
          if(a==a[i+1])! `, c' k* P& ?. p: X9 B: u
          {  for(j=i+1;a[j]==a[j+1];j++);
    ) `* w) E* }& f) L; {5 S- L: F% H& s          printf("%d%c",j-i+1,a);) [% [1 G4 f# \$ a7 K% m
              i=j+1;
    / Z% x% l, a3 E% z5 `      }  h0 K5 e) J+ U4 F2 g2 O6 K
          else3 D  @; P9 L+ O" ]2 @# k
          {  if(a==1)
    # ?6 \/ A" v8 D/ B( x% _            { printf("11");( O  i4 c! V- ^2 |2 p
                     i++;$ [, u7 s' {1 V; a9 o' U6 d* f( e7 b9 M
                }5 d4 O$ A1 }/ R/ s3 `( N
              else
    ( s2 M0 j( C# q9 T1 o" n7 ~          {  for(j=i+1;a[j]!=a[j+1];j++);3 {; O4 ?. Z6 A/ X3 E0 c
                  printf("1");
    * [& A0 |9 w# m  o- Q9 R5 F              if(j==n+1)5 m+ i/ p4 Q, j0 V) V$ U6 \
                      j--;
    + C. W; ]; B, w' h              for(k=i;k<j;k++)
    % e: q' x7 I- Q3 n0 x                  printf("%c",a[k]);( F! J; |+ V3 r' T  d0 H
                  printf("1");) c# g+ s2 U. |$ e. w
                  i=j;
    ( j% y  \8 ?" t. |  |$ ~7 u4 u, J1 }5 v9 O          }
    * U6 w* ?  L6 R( Y& |8 E      }
    2 @9 k$ C5 D6 X* d      if(n==1)
    9 B* V7 y9 e% Q" ~          if(a[0]=='1')2 c" H8 n) E$ V$ w- t6 ]
                  printf("11");8 c4 i$ t+ B. p+ `
              else
    ! r  [# g" h6 u6 e              printf("1%c1",a[0]);
    . g2 q2 V5 o9 X( Z# ?( a   printf("\n");
    , [# l6 a. J) A1 n, X- ^ }
    % k- c: P" g# W, G, ]      来源:编程爱好者acm题库
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    qnbs1 实名认证       

    0

    主题

    4

    听众

    34

    积分

    升级  30.53%

    该用户从未签到

    自我介绍
    200 字节以内

    不支持自定义 Discuz! 代码
    回复

    使用道具 举报

    Jackge        

    0

    主题

    4

    听众

    23

    积分

    升级  18.95%

  • TA的每日心情
    开心
    2013-4-28 11:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    一个不想平庸的男人

    群组C 语言讨论组

    回复

    使用道具 举报

    dahai1990        

    0

    主题

    3

    听众

    47

    积分

    升级  44.21%

  • TA的每日心情
    郁闷
    2013-1-15 09:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    群组2012第三期美赛培训

    回复

    使用道具 举报

    qazwer168        

    0

    主题

    4

    听众

    53

    积分

    升级  50.53%

    该用户从未签到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-6 10:48 , Processed in 0.363444 second(s), 73 queries .

    回顶部