블 루 브리지 컵 역대. - 이상 한 수열.

4259 단어 블 루 브리지 컵
블 루 브리지 컵 역대. - 이상 한 수열.
아직 알고리즘 을 복습 하지 않 으 면 국 대 회 는 무릎 을 꿇 을 것 이다.

  :     

 X       ,     ,  :
13
1113
3113
132113
1113122113
....

YY       ,     :
           ,           “   ”
   21    ,   :1 11 3,   :1113
 3 ,   :3 1,1 3,   :3113

        ,         ,         。

    :

             ,   100 
   ,    n,            ,n   20

     ,            。

  :
    :
5
713211321322115

    :
      (    ) < 512M
CPU    < 1000ms


        ,           :“    ...”      。

             ,     ,       。
  :    package  。    jdk1.7        。
  :        :Main,         。


이것 은 국전 네 번 째 문제, 즉 큰 문 제 를 만 드 는 첫 번 째 문제 로 그리 어렵 지 않다.물 건 너 기:
#include
#include
#include
#include
using namespace std;
struct mode {
    int sum, p;
};
int N, M, s2[10000];
char s1[10000];
mode getMode(int start) {
    mode m1;
    int i, sum = 1;
    for (i = start; s1[i] == s1[i+1]; i++) {
        sum++;
    } 
    m1.sum = sum;
    m1.p = i+1;
    return m1;
}
int main() {
    freopen("in.txt", "r", stdin);
    scanf("%d%d", &N, &M);
    int k = 0;
    sprintf(s1, "%d", N);
    while(M--) {
        int len = strlen(s1);
        k = 0;
        for (int i = 0; i < len;) {
            int t = s1[i]-'0';
            mode m1 = getMode(i);
            i = m1.p;
            s2[k++] = m1.sum;
            s2[k++] = t;
        }
        memset(s1, 0, sizeof(s1));
        for (int i = 0; i < k; i++) s1[i] = s2[i]+'0';
    }
    for (int j = 0; j < k; j++) printf("%d", s2[j]);
    return 0;
}

좋은 웹페이지 즐겨찾기