本題使用貪心思想
乙個讓這串數字越小,它的高位數就得越小。我們每次刪除要使得刪除後的數高位盡量的小。
每一次刪除時,從最高位開始向低位數遍歷,當遇到的一位數比它的更高位更小時,我們就刪除它的更高一位,讓這個更小的數「篡位」,就可以保證這串數更小。下一次刪除時,要也從新從最高位開始。
需要注意的地方
刪除了最高位之後,需要刪去後面的『0』
輸出的時候要注意有沒有全刪刪沒,全刪沒後要輸出0。
/*使用c++ 的 string*/
#include
#include
using
namespace
std;
int main()
i = 0;//想讓下一次迴圈i=1,可惜忘了每次迴圈還要加1,寫成了 i=1;o(╥﹏╥)o }}
//k沒用完?說明所以數都公升序。這時只需去除末尾的k位
for(; k>0; k--)
if(a.empty())else{
cout
《時空複雜度會略低
題解 刪數問題 Noip1994
時間限制 1000 ms 記憶體限制 65536 kb 提交數 11506 通過數 3852 輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判...
P1106 刪數問題 詳細題解
戳一戳 題解 對於這題我們使用貪心思想 貪心策略是比較前乙個數是不是比後面一位數要大 因為要得到最小的數,就要盡量讓數的前面位數小 如果要大的話,就把當前的數給刪去 得到乙個新的string 然後再重新進行一次兩兩大小的判斷 每重新判斷一次 就會刪去乙個數 也就是總體要判斷k次 當然也會出現沒有前面...
刪數問題(貪心)
time limit 1000ms memory limit 65536k 有疑問?點這裡 給定n 位 n 100 正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n 位正整數a和正整數k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。對於給定的正整...