1. 程式人生 > >刪數問題(貪心演算法)

刪數問題(貪心演算法)

1.問題描述:

問題描述:給定n位正整數a,去掉其中任意k<=n個數字後,剩下的數字按原次序排列組成一個新的正整數,對於給定的n位正整數a和正整數k,設計一個演算法找出剩下數字組成的新數最小的刪數方案。

對於給定的正整數a,程式設計計算刪去k個數字後得到的最小數。

輸入檔案示例:

178543

4

輸出檔案示例:

13

2.相關演算法:

#include<stdio.h>
#define M 6
int main(){
	int arr[]={1,7,8,5,4,3};
	int arrMark[]={0,0,0,0,0,0};//用作標記的陣列,成員記為1表示刪除,記為0表示未刪除 
	int delNum;//要刪除的個數 
	int i;
	int j;
	int next=0;//記錄下一個未標記刪除的下標 
	
	scanf("%d",&delNum);//輸入要刪除的數量 
	
	for(i=0;i<delNum;i++){
		for(j=0;j<M;j++){
			if(j==M-1) {//如果是最後一個元素,那麼直接刪除即可 
					arrMark[j]=1;
					break; 
			}
			while(next<=j||arrMark[next]==1){//找到下一個未標記刪除的下標  
				next++;
			}
			if(arrMark[j]!=1&&arr[j]>arr[next]){//如果發現降序,則刪除 
				arrMark[j]=1;
		    	break;
			}
		}
		next=0;
	}
	
	for(i=0;i<M;i++){//輸入未標記刪除的陣列元素 
		if(arrMark[i]!=1)
			printf("%d",arr[i]);
	}
}

3.問題分析與解題思路:

數位越高,對數字最終的大小的影響會越大,因此最好刪除數位比較高的數字。而且如果是相鄰數字之間刪除比較大的數字,最終的結果會比較小。因此我們可以從最高位開始找,找到第一個比自己下一位數字大的數字進行刪除。每次都這樣處理,最終就可以得到目標結果。


相關推薦

問題貪心演算法

1.問題描述:問題描述:給定n位正整數a,去掉其中任意k<=n個數字後,剩下的數字按原次序排列組成一個新的正整數,對於給定的n位正整數a和正整數k,設計一個演算法找出剩下數字組成的新數最小的刪數方案。對於給定的正整數a,程式設計計算刪去k個數字後得到的最小數。輸入檔案示

演算法貪心演算法--問題

刪數問題(需知道的數學定理) 給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成一個新 的正整數。對於給定的n位正整數a和正整數 k,設計一個演算法找出剩下數字組成的新數最

杭電oj--1009貪心演算法

 思路分析:先把每個倉庫的價效比資訊計算出來,然後在按價效比大小降序排列(從大到小),先把當前價效比大換掉,最後再把剩下的食物和當前 i 的價效比相乘,由此可AC. #include<iostream> #include<vector> using namesp

分數揹包問題貪心演算法O(n)時間求解

演算法核心:線性時間選擇演算法+貪心 問題介紹:有一個揹包,總限重為c, 還有一系列物品,他們有各自的重量(記為)和各自的利潤,每個物品可以只被拿走一部分。設計一個在O(n)時間內的貪心演算法使得裝入揹包的物品利潤最大化,並且總物品重量不超過。 演算法數學化表示:

1070 Mooncake貪心演算法

1070 Mooncake (25 分) Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types of filling

PAT乙級——1020貪心演算法

題目:月餅 (25 分) 月餅是中國人在中秋佳節時吃的一種傳統食品,不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量,請你計算可以獲得的最大收益是多少。 注意:銷售時允許取出一部分庫存。樣例給出的情形是這樣的:假如我們有 3

補提交卡貪心演算法

描述 小Ho給自己定了一個巨集偉的目標:連續100天每天堅持在hihoCoder上提交一個程式。100天過去了,小Ho檢視自己的提交記錄發現有N天因為貪玩忘記提交了。於是小Ho軟磨硬泡、強忍著小Hi鄙視的眼神從小Hi那裡要來M張"補提交卡"。每張"補提交卡"都可以補回一天的提交,將原本沒有提交程式的一天變

1037. Magic Coupon (25)-PAT甲級真題貪心演算法

1037. Magic Coupon (25)The magic shop in Mars is offering some magic coupons. Each coupon has an in

數字組合問題貪心演算法

設有N個正整數,現在需要你設計一個程式,使他們連線在一起成為最大的數字,例3個整數 12,456,342 很明顯是45634212為最大,4個整數 342,45,7,98顯然為98745342最大 程式要求:輸入整數N 接下來一行輸入N個數字,最後一行輸出最大的那個數字! 思路:拿到這題

HDOJ-1052 Tian Ji -- The Horse Racing貪心演算法

題目描述:就是田忌賽馬,但是要注意兩邊存在馬速度相同的情況。 分析: (看了各路大佬的題解Orz,自我總結一下) 先排序,這裡從快到慢排序; 1.田忌最快馬>王最快馬(貪心,毫無疑問,進行比賽後獲勝) 2.田忌最快馬<王最快馬(同樣的,既然贏不了

C語言——恐怖水母貪心演算法

 恐怖水母 Time Limit: 3000ms, Memory Limit: 10000KB , Accepted: 3551, Total Submissions: 6402 Description 比基堡海灘有一個有n個觸手的恐怖水母,蟹老闆希望僱傭一些海綿

演算法學習系列貪心演算法—多處最優服務次序問題

問題描述: 設有n(1≤n≤100)個顧客同時等待一項服務。顧客i需要的服務時間為ti,1≤i≤n,共有s處提供此服務。應如何安排n個顧客的服務次序才能使平均等待時間達到最小。平均等待時間是n個顧客的等待時間(含服務時間)總和除以n。編寫一個貪心演算法,計算n

ACM零起點2017-7-28貪心演算法

不同屬性不繫結,可以使用貪心法 如果繫結,則不能貪心法解決 Radar Installation Assume the coasting is an infinite straight line. Land is in one side of coasting

51NOD 1449——砝碼稱重貪心演算法

題目如下: 現在有好多種砝碼,他們的重量是 w0,w1,w2,...  每種各一個。問用這些砝碼能不能表示一個重量為m的東西。 樣例解釋:可以將重物和3放到一個托盤中,9和1放到另外一個托盤中。 Input 單組測試資料。 第一行有兩個整數w,m (2 

4-9 汽車加油問題貪心演算法

問題描述:一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計一個有效演算法,指出應 在哪些加油站停靠加油,使沿途加油次數最少。對於給定的n(n <= 5000)和k(k <= 10

乘坐公交貪心演算法----去哪兒2016研發工程師程式設計題

[程式設計題] 乘坐公交 從小明家所在公交站出發有n路公交到公司,現給出每路公交的停站數(不包括起點和終點),及每次停的時間(一路車在每個站停的時間相同)和發車的間隔,先假定每輛車同時在相對

活動安排貪心演算法

貪心演算法總是做出在當前看來是最好的選擇。但貪心演算法並不從整體最優加以考慮,它所做出的選擇只是在某種意義上的區域性最優選擇。但其最終結果能達到預期目的,或者是最優解的近似解。 活動安排是貪心演算法的

汽車加油問題貪心演算法

1.問題描述:一輛汽車加滿油後可行駛nkm。旅途中有若干加油站。設計一個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。演算法設計:對於給定的n和k個加油站位置,計算最少加油次數。資料輸入:n:表示汽車加滿油後可行駛nkm          k:旅途中有k個加油站

最優裝載貪心演算法

演算法設計例題:最優裝載(貪心) memory limit: 32768KB    time limit: 1000MS accept: 24    submit: 68 Description 有一批集裝箱要裝上一艘載重量為C的輪船。其中集裝箱i的重量為wi。最

C++會場安排問題貪心演算法

一、問題描述問題描述:假設要在足夠多的會場裡安排一批活動,並希望使用盡可能少的會場。★演算法設計:對於給定的k個待安排的活動,計算使用最少會場的時間表。★資料輸入:第一行有1個正整數k,表示有k個待安排的活動。接下來的k行中,每行有兩個正整數,分別表示k個待安排的活動開始時間