T1321 刪數問題

2021-09-10 23:23:38 字數 788 閱讀 1275

題目鏈結

這裡先介紹之前錯誤的思路:

找出數字中n-k個最小的數,組成新的正整數;

但是很快就有問題出現,雖然每次都找的是整數各個位置中最小的數,但是忽略掉了位置的相對關係,如以下的例子:

輸入的乙個整數:178906; 6位數的整數

刪除其中4個數;

按照這個思路,即要選擇6-4=2個最小的數,即0 和1,按照數中原有的次序,得到的是10;

但是事實上,應該是06,即6

所以換個思路,叫「最近下降點」優先。

利用「最陡下降點」優先,即每次找到第乙個元素,使其滿足大於下乙個元素。正如上述的那個例子,第乙個刪除的是9,因為9>0;

得到的整數是17806;第二個刪除的是8,因為8>0,得到的整數是1706,第三個刪除的是7,因為7>0,得到的整數是106;

第四個刪除的是1,因為1>0,得到的是06,為正確的答案。

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int n=1010;

char a[n];

int main()

break;

}} len--;

} int i=0;

while(iif(i==len) cout<<"0";

else

}}

1321 刪數問題 Noip1994

輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判錯。ns 最後剩下的最小數。175438 4 13 created on 2020 2 11 ...

1321 例6 3 刪數問題 Noip1994

輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判錯。ns 最後剩下的最小數。175438 4 13 include includeusing ...

刪數問題(貪心)

time limit 1000ms memory limit 65536k 有疑問?點這裡 給定n 位 n 100 正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n 位正整數a和正整數k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。對於給定的正整...