這道題曾經在cqoj上考過,是第二次做了。
這是一道使用字串的貪心題。首先要根據機組例子來確定:刪除遞增序列的最後一位。即迴圈找到那一位後,把後面的數往前壓。所以我在艱難處理完雙重迴圈後(這個處理不是很順暢),便卡在了前導零上四次(cqoj的資料太水)。最後看了下題解,將前導零處理好了,ac。
1.注意前導零的處理:while到第乙個不是零的,如到頭,則cout<<"0"
2.將string在開始時便後移一位,不然彆扭
3.想貪心策略時要多拿幾個例子,找到規律
**:
#include#include#include
#include
#include
using
namespace
std;
bool flag=false
;string
a;int
s;int len=0
;int
i;int
main()
while(i<=len-2)
len--;
s--;
}i=0
;
while(i<=len-1&&a[i]=='
0')i++;//
處理前導0
if(i==len)printf("0"
);
else
for(int j=i;j<=len-1;j++)
printf("%c
",a[j]);
return0;
}
P1106 刪數問題
傳送門 這道題問給出乙個數字 n位 問刪去任意k位使其剩下位數組成的數字最小 一開始我是覺得刪掉前k大的位數,顯然是不對的。例如,1649,我們刪掉9,那麼結果就為164,如果我們刪掉6就是149,顯然後面的更小的。看了題解才會做,我們要一直找s i s i 1 的數並刪掉,並且肯定能找到,中間找不...
P1106 刪數問題
題目描述 鍵盤輸入乙個高精度的正整數n 不超過250位 去掉其中任意k個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和k,尋找一種方案使得剩下的數字組成的新數最小。輸入格式 n 高精度的正整數 k 需要刪除的數字個數 輸出格式 最後剩下的最小數。輸入輸出樣例 輸入175438...
P1106 刪數問題
題目描述 鍵盤輸入乙個高精度的正整數 n 不超過 250 位 去掉其中任意 k 個數字後剩下的數字按原左右次序將組成乙個新的非負整數。程式設計對給定的 n和 k,尋找一種方案使得剩下的數字組成的新數最小。輸入格式 n 高精度的正整數 k 需要刪除的數字個數 輸出格式 最後剩下的最小數。輸入輸出樣例 ...