贪心算法问题键盘输入一个高精度的正整数你(n

1个回答

  • //身为大一菜鸟的我曾错了n次的题

    //算法是从头开始扫过去,若当前扫到的数比下一个大,则删,删后回退到上一个未被删的数继续,直到删完指定数或扫到最后一个元素,若删不够指定的数,则此刻数组肯定是递增的,所以只要从后向前删至足够数量便行了

    #include

    #include

    using namespace std;

    char str[250];

    int a[250];

    int b[250];

    int main(){

    int i, len, k, l, r, c, t, f;

    do{

    f = 0;

    cin >> str;

    if (str[0] == '0')

    break;

    len = strlen(str);

    cin >> k;

    for (i = 0; i= k)

    break;

    if (str[r] - str[l] >= 0){

    l = a[l];

    r = a[r];

    }

    else{

    c++;

    if (b[l] != -1){

    a[b[l]] = r;

    b[r] = b[l];

    l = b[l];

    }

    else{

    f = 1;

    b[r] = -1;

    a[0] = r;

    l = a[l];

    r = a[r];

    }

    }

    }

    t = r - 1;

    for (; c