從第一個數開始遍歷,到找到單調遞減的第一個數(即單調遞增的最后一個數),則刪除,若無單調遞減子序列,則刪掉最后一個非遞減序列的數;每找到一個就又從頭開始。即每做一次刪數,就是一次貪心選擇,刪掉此數剩下的數為組成最小,經過證明,此結論正確。
eg:
42135
單調遞減的第一個數為第一個數為4,刪掉得到2135
之后單調遞減的第一個數為2,刪掉得到135
不存在單調遞減序列,則刪除最后一個數5
需要注意的是:2001刪除一個數后應該為1,而不是001,需要進行處理
#include
#include?
using namespace std;
?
int shanshu(string &a, int k);
int main() {
? ?string st;
? ?int n, startIndex = 0;
? ?cin >>st >>n;
? ?n = shanshu(st, n);
? ?for (int i = 0; i< n; i++) {
? ? ? ?if (st[i] == '0') {
? ? ? ? ? ?startIndex++;
? ? ? }
? }
? ?for (int i = startIndex; i< n; i++) {
? ? ? ?cout<< st[i];
? }
?
? ?return 0;
}
int shanshu(string &a, int k) {
? ?int n = a.size(), j = 0;
? ?while (k >0) {
? ? ? ?for (int i = 0; i< n; i++) {
? ? ? ? ? ?if (a[i] >a[i + 1]) {
? ? ? ? ? ? ? ?for (int j = i; j< n; j++) {
? ? ? ? ? ? ? ? ? ?a[j] = a[j + 1];
? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?n--;
? ? ? ? ? ? ? ?break; ?// 忘記退出循環了
? ? ? ? ? } else if (i == n - 1) {
? ? ? ? ? ? ? ?n--;
? ? ? ? ? ? ? ?break;
? ? ? ? ? }
? ? ? }
? ? ? ?k--;
? }
? ?return n;
}
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前文章:貪心算法(刪數問題)-創新互聯
轉載來源:http://www.yijiale78.com/article38/ceeesp.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、網站排名、品牌網站建設、網站導航、網站改版、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯