演算法提高 雙十一搶購 C

2021-10-04 05:31:30 字數 1263 閱讀 2711

問題描述

一年一度的雙十一又來了,某網購**又開始了半價銷售的活動。

小g打算在今年的雙十一裡盡情地購物,以享受購買的極度快感,她已經列好了她想買的物品的列表。

當然小g並不是出身富貴家庭,所以她網銀裡的錢只是乙個有限的整數s(單位:元)。

這次搶購她打算遵循這三個原則選擇每乙個物品:

1.先買能「賺」最多的;

2.在「賺」一樣多的情況下,先買最便宜的(這樣買的東西就可能更多了);

3.在前兩條裡都判斷不了購買順序的話,先購買在列表裡靠前的。

(由於**裡還是有一部分商品並沒有打五折,所以2的情況(「賺」的錢數為0)是完全可能發生的)

現在,在雙十一的這一天,你要幫小g編寫乙個程式,來看看她應該去買她列表裡的哪些物品。(總**不要超過s哦)

要是幫她寫好這個程式的話,或許你能在光棍節這一天裡贏得她的芳心哦~

輸入格式

輸入共n+1行。

第一行包含兩個整數s和n,s表示小g的可用金額,n表示她看上的物品個數。

接下來n行,對應每乙個物品,每行有兩個整數a和b,a是物品的原價(單位:元),b為0或1,若b為0,則此物品不半價,若b為1,則此物品半價銷售。

輸出格式

輸出共一行,為小g要買的物品序號(從1開始),用空格隔開,注意按序號從小到大輸出。

若小g一件都買不了,則輸出0.

#include

using

namespace std;

/*typedef struct thing;*/

struct thing

;int

main

(int argc,

char

*ar**)

for(i=

0;i1;i++)if

(a[j]

.price==a[j+1]

.price)}}

}for

(i=0

;ifor(i=

0;i1;i++)}

if(a[j]

.price==a[j+1]

.price)}}

for(i=

0;iif(k!=0)

}}for(i=

0;i) cout<.num+

1<<

" ";

cout<}else

cout<<

0

}

若想更簡潔,可參考

藍橋杯 試題 演算法提高 雙十一搶購

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 一年一度的雙十一又來了,某網購 又開始了半價銷售的活動。小g打算在今年的雙十一裡盡情地購物,以享受購買的極度快感,她已經列好了她想買的物品的列表。當然小g並不是出身富貴家庭,所以她網銀裡的錢只是乙個有限的整數s 單位 元 這次搶購她...

粉嫩公主雙十一搶購,新品限量搶購

雙十一來啦 不到11月,雙十一大戰序幕就已然拉開,買買買 剁剁剁 正如火如荼進行中。和往年相比,今年雙十一 一樣卻又不一樣 一樣的是大家的購買熱情未減,不一樣的是粉嫩公主變得更貼近消費者,今年雙十一,粉嫩公主憑藉優質 健康 味美 有效等特點,送萬份好禮,更有新品限量搶購,雙色球贏免單 粉嫩公主作為女...

雙十一搶購淨水器哪個牌子好也得有竅門

一年一度雙十一有快開啟,優惠搶購,清空購物車,也需要懂得把握技巧,淨水器選購物美價廉的產品更要懂得其中的竅門。淨水器品牌數量眾多,不能貪圖便宜,只看低 而忽視產品質量和淨化效果,因程式設計客棧此我們要從眾多優質品牌中挑選出合適的產品。將優質品牌的淨水器加入購物車,貨比三家,根據自家飲水習慣,挑選出靠...