sgu 296

来源:互联网 发布:淘宝提示账号存在风险 编辑:程序博客网 时间:2024/05/16 06:28
#include <stdio.h>#define NONE 'n'/*升序数列,删除前面的高位降序数列,删除后面的低位先处理升序*/char n[1009];int k;// find the next digit after digit a, return -1 when can not find.int next(int a) {    ++a;    while (n[a] == NONE){        ++a;    }    if (n[a] == '\0') {        return -1;    }    return a;}// find avialable digit befor the digit, if do not have, find after it.int pre(int a) {    int b = a;    --a;    while (a >= 0 && n[a] == NONE){        --a;    }    if (a < 0) {        return next(b);    }    return a;}int main() {    scanf("%s%d", n, &k);    int i = 0;    while (k > 0) {             // 处理升序        int j = next(i);        if (j == -1) {            break;        }        if (n[i] < n[j]) {          // asc ?            n[i] = NONE;            --k;            i = pre(i);        }        else {            i = j;        }    }    while (k > 0) {             //如果有,处理剩余的降序        n[i] = NONE;        --k;        i = pre(i);    }    i=0;    while (n[i] != '\0') {        if (n[i] != NONE) {            putchar(n[i]);        }        ++i;    }    return 0;}

原创粉丝点击