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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言第一行为N以下N行,C语言每日小练(四)——勇者斗恶龙

發布時間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言第一行为N以下N行,C语言每日小练(四)——勇者斗恶龙 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

勇者斗惡龍

你的王國里有一條n個頭的惡龍,你希望雇傭一些騎士把它殺死(砍掉所有的頭)。村里有m個騎士可以雇傭,一個能力值為x的騎士可以砍掉惡龍一個致敬不超過x的頭,且需要支付x個金幣。如何雇傭騎士才能砍掉惡龍的所有頭,且需要支付的金幣最少?注意,一個騎士只能砍一個頭(且不能被雇傭兩次)。

輸入格式:輸入包含多組數據。每組數據的第一行為正整數n和m(1<=n,m<=20000);以下n行每行為一個整數,即惡龍每個頭的直徑;以下m行每行為一個整數,即每個騎士的能力。輸入結束標志為n=m=0.

輸出格式:對于每組數據,輸出最少花費。如果無解,輸出“Loowater is doomed!”。

樣例輸入:

2 3

5

4

7

8

4

2 1

5

5

10

0 0

樣例輸出:

11

Loowater is doomed!

解:此題直接按如下思路:龍頭大小和騎士能力值排序->分別比較->雇傭滿足條件的騎士~即可~

附上代碼:

#include#include #includeusing namespace std;

#define MAX 20000

int warriors[MAX];

int dragon[MAX];

int main()

{

int i, j, sum;

int n, m;

while(scanf("%d%d", &n, &m) == 2 && n && m)

{

for(i = 0; i < n; i++) scanf("%d", &dragon[i]);

for(j = 0; j < m; j++) scanf("%d", &warriors[j]);

sort(dragon, dragon+n); sort(warriors, warriors+m); //將龍頭和騎士從小到大排序

j = 0; sum = 0;

for(i = 0; i < m; i++)

{

if(warriors[i] >= dragon[j]) //如果騎士能力值足夠,可以砍掉此龍頭

{

sum += warriors[i]; //雇傭該騎士

j++;

}

if(j == n) break;

}

if(j == n) printf("%d\n", sum);

else printf("Loowater is doomed!\n");

}

return 0;

}

運行結果:

總結

以上是生活随笔為你收集整理的C语言第一行为N以下N行,C语言每日小练(四)——勇者斗恶龙的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。