NYIST448 尋找最大數

2021-07-09 04:32:04 字數 971 閱讀 6644

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2 描述

請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,

比如當n=92081346718538,m=10時,則新的最大數是9888

輸入

第一行輸入乙個正整數t,表示有t組測試資料

每組測試資料佔一行,每行有兩個數n,m(n可能是乙個很大的整數,但其位數不超過100位,並且保證資料首位非0,m小於整數n的位數)

輸出每組測試資料的輸出佔一行,輸出剩餘的數字按原次序組成的最大新數

樣例輸入

2

92081346718538 10

1008908 5

樣例輸出

9888

98

這是一道簡單的貪心演算法,思路如下

題中減去m個數,為了使結果最大,那麼每次找最大的,當然還要保持順序,減去m個數,

第一次,從第0個開始找,減去m個數,還剩下len(總長度)-m-1個數,以第一組

為例,第一次從0到10,這是範圍,找到最大的,為什麼為10,剩下3個,假設第乙個最大的數在第10位,那麼剩下的3位就是剩下的要找的數

以後每次尋找範圍從第一次的範圍+1,開始就是第一次最大數+1

下面是**:

#include#include#include#define maxn 102

using namespace std;

void trans(char* s,int n,int* a)

void prin(int n,int* a)

int main()

beg=maxaddr+1;end+=1;fl++;//更新beg和end

} prin(fl,res); //輸出結果

} return 0;

}

南陽448 尋找最大數

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n...

448 尋找最大數 (貪心)

描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m n可能是乙個很大的整數,但其位數不超過100位,並且保證資料...

南陽448 尋找最大數

描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m n可能是乙個很大的整數,但其位數不超過100位,並且保證資料...