貪心-刪數問題

HowieLee59發表於2019-04-02

Problem Description

 鍵盤輸入一個高精度的正整數n(≤100位),去掉其中任意s個數字後剩下的數字按照原來的左右次序組成一個新的正整數。程式設計對給定的n與s,尋找一種方案,使得剩下的數字組成的新數最小。

Input

  輸入有多組 每組包括原始數n,要去掉的數字數s;

Output

 輸出去掉s個數後最小的數

Sample Input

178543  4

Sample Output

13
#include<stdio.h>
#include<string.h>

int main(){
    int a,len,i,n;
    char b[101];
    while(~scanf("%s %d",b,&a)){//刪除數
        while(a--){
            i = 0;
            len = strlen(b);
            while(b[i] <= b[i+1]){//刪除掉首個遞減的元素
                i++;
            }
            for(;i<len;i++){
                b[i] = b[i+1];
            }
        }
        i = 0;
        n = 0;
        while(b[i]=='0'&&b[i]<=b[i+1]){//處理前面為0的情況
            n++;
            i++;
        }
        len = strlen(b);
        if(n == len){
            printf("0\n");//刪除之後全部為0的情況 
        }else{
            for(i = n ; i < len;i++){
                printf("%c",b[i]);
            }
            printf("\n");
        }
    }
    return 0;
}

 

相關文章