1. 程式人生 > >uva11292勇者鬥惡龍(貪心)

uva11292勇者鬥惡龍(貪心)

這題使用了貪心的演算法,先用勇士和龍的頭排序,因為要找付給騎士的錢最少的,所以從小到大排序,如果可以砍下來頭的話,就讓騎士的錢加上騎士的身高,讓殺龍的數量加一 如果到最後龍全部被殺了且付的錢大於0,就輸出付給騎士的總錢數:程式碼

#include<bits/stdc++.h>
using namespace std;
int a[1000000],b[1000000];
int num,sum,bk[1000000];
int main() {
    int n,m;
    while(cin>>n>>m&&n&&m) {
      memset
(bk,0,sizeof(bk)); sum=0,num=0; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<m;i++) cin>>b[i]; sort(a,a+n); sort(b,b+m); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(!bk[j]&&b[i]>=a[j]) { num++; bk[
j]=1; sum+=b[i]; break; } } if(sum>0&&num==n) cout<<sum<<endl; else cout<<"Loowater is doomed!\n"; } }