尋找最大數

2021-08-01 05:43:19 字數 1043 閱讀 8527

時間限制:

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

**第六屆itat複賽b卷2題改編

上傳者

acm_趙銘浩

這應該是一道思維題目吧,但是自己想的太簡單了,這些問題還是應該從出發點考慮,不能投機取巧

那麼如何求在原次序下的最大值!!!

首先說的應該是找乙個最大值,,前提是這個最大值,應該位數大於等於要留的位數才可以,其實後面的就是根據這一原理遞迴來說吧(或者是迴圈)

自己原本想著,將資料排序,正序刪除前邊的資料就可以了,後來發現不是很合適,因為如何這個值在後面沒有多大價值,就像

9387902,如何按著自己的方法刪除0,並不是正確結果!!!

所以應該找前邊 的相對較大的

#include #include #include #include #include #include using namespace std;

int main()

}ans[k++]=str[temp];

mark=temp+1;

max='0';

}while(--m);

ans[k]='\0';

printf("%s\n",ans);

} return 0;

}

尋找最大數

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

尋找最大數

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

尋找最大數

尋找最大數 三 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述給出乙個整數n,每次可以移動2個相鄰數字上的數字,最多移動k次,得到乙個新的整數。求這個新的整數的最大值是多少。輸入多組測試資料。每組測試資料佔一行,每行有兩個數n和k 1 n 10 18 0 k 100 輸出每組...