日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

删除字符问题(贪心)

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 删除字符问题(贪心) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 /* 2 鍵盤(pán)輸入一個(gè)高精度的正整數(shù)n(<=240位),去掉任意s個(gè)數(shù)字后剩下的數(shù)字按原左右次序?qū)⒔M成一個(gè)新的正整數(shù)。 3 編程對(duì)給定的n和s,尋找一種方案,使得剩下的數(shù)最小。 4 Simple Input 5 178543 6 4 7 Simple Output 8 13 9 */ 10 #include <iostream> 11 #include <string> 12 using namespace std; 13 string s; 14 int num; 15 void fun() 16 { 17 int i,j,k,t; 18 int size = s.length(); 19 for(i=0;(s.length()+num)>size;) 20 {//必須是i<s.length(),不是i<s.length()-1,否則456123 3會(huì)輸,123而不是12, 因?yàn)樽詈蟮?會(huì)因i<s.length()-1而直接結(jié)束,不在進(jìn)行if比較 21 //正確結(jié)果應(yīng)該是以第(s.length()+num)==size結(jié)束 22 //所以i<s.length()條件可以不要 23 if(s[i]>s[i+1]) 24 { 25 s.erase(i,1); 26 i = 0; 27 continue; 28 } 29 else 30 i++;//不能放在for內(nèi),因?yàn)? 31 } 32 cout<<s<<endl; 33 } 34 35 int main() 36 { 37 int i,j,k,t; 38 while(cin>>s>>num) 39 { 40 fun(); 41 s.clear(); 42 } 43 return 0; 44 } 45 //注意:每次刪除最大的數(shù)字是不對(duì)的,該題的貪心策略是刪除一個(gè)數(shù)字后剩下的數(shù)是刪除其他數(shù)字中最小的, 46 //如:178456129 3,正確結(jié)果是145129,錯(cuò)誤結(jié)果是145612

?剛才同學(xué)說(shuō):申請(qǐng)一個(gè)棧從左往右掃描,如果新入棧元素小于棧頂元素則彈棧并計(jì)數(shù)cnt(刪除的字符個(gè)數(shù)),如果最后cnt<num,則繼續(xù)彈棧num-cnt次,最后需要借助另一個(gè)棧逆序輸出,cnt == num時(shí)并輸出沒(méi)入棧的剩余數(shù)字;不可用雙端隊(duì)列或者隊(duì)列(因?yàn)殡p端隊(duì)列只不過(guò)是可在對(duì)頭插入,并不能在隊(duì)尾刪除),或者直接使用數(shù)組模擬棧,最后從前往后輸出剩余的元素。

轉(zhuǎn)載于:https://www.cnblogs.com/hxsyl/archive/2012/08/23/2652029.html

總結(jié)

以上是生活随笔為你收集整理的删除字符问题(贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。