刪數(shù)問(wèn)題 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic PRoblem Description
鍵盤輸入一個(gè)高精度的正整數(shù)n(≤100位),去掉其中任意s個(gè)數(shù)字后剩下的數(shù)字按照原來(lái)的左右次序組成一個(gè)新的正整數(shù)。編程對(duì)給定的n與s,尋找一種方案,使得剩下的數(shù)字組成的新數(shù)最小。 Input
輸入有多組 每組包括原始數(shù)n,要去掉的數(shù)字?jǐn)?shù)s; Output
輸出去掉s個(gè)數(shù)后最小的數(shù) Example Input
178543 4 Example Output
13 Hint
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int i = 0,len; int s; char a[101]; while(~scanf("%s %d",a,&s)){ len = strlen(a); if(s>=len){ printf("0/n"); break; } while(s){//貪心一手 i = 0; len = strlen(a); while(i<len&&a[i]<=a[i+1])//只要后一個(gè)比前一個(gè)大就不往后走 i++; while(i<len){//直接把那個(gè)比前一個(gè)大的吞掉 a[i] = a[i+1]; i++; } s--; } i = 0; while(a[i]=='0')//這里是去除前導(dǎo)為0的情況 i++; int j = 0; while(i<len){ a[j] = a[i]; i++; j++; } if(a[0]=='/0'){//如果全部都是0的話,直接輸出0 printf("0/n"); break; } printf("%s/n",a); } return 0;}新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注