時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:2 描述
請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,
比如當n=92081346718538,m=10時,則新的最大數是9888
輸入
第一行輸入乙個正整數t,表示有t組測試資料
每組測試資料佔一行,每行有兩個數n,m(n可能是乙個很大的整數,但其位數不超過100位,並且保證資料首位非0,m小於整數n的位數)
輸出每組測試資料的輸出佔一行,輸出剩餘的數字按原次序組成的最大新數
樣例輸入
292081346718538 10
1008908 5
樣例輸出
988898
這是一道簡單的貪心演算法,思路如下
題中減去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位,並且保證資料...