貪心算法例子:
你的國王中有一條n個頭的龍,你希望僱傭一些騎士把它殺死。村裏有m個騎士,且只能僱傭一次。
一個能力值爲x的騎士,只能砍掉一個直徑不超過x的頭,
且需要支付的金幣爲x,如何僱傭這些騎士支付金幣最少。
例子:
input:2 3
5
4
7
8
4
output:11
input:2 1
5
5
10
output:Loowater is doomed!
int main(void)
{
int n = 0, m = 0;
int iDragonArr[2000], iLoowaterArr[2000];
cin >> n >> m;
for(int i = 0; i < n; ++i){
cin >> iDragonArr[i];
}
for(int i = 0; i < m; ++i){
cin >> iLoowaterArr[i];
}
// 貪心算法
int iTemp = 0, iCoin = 0, itemp = 0;
if(n <= m){
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
if(iDragonArr[i] <= iLoowaterArr[j]){
if(iTemp == 0){
iTemp = iLoowaterArr[j];
itemp = j;
}else{
if(iTemp > iLoowaterArr[j]){
iTemp = iLoowaterArr[j];
itemp = j;
}
}
}
}
iCoin += iTemp;
iTemp = 0;
iLoowaterArr[itemp] = 0;
itemp = 0;
}
cout << iCoin << endl;
}else{
cout << "LooWater is doomed" << endl;
}
return 0;
}
Kindy
2016年3月25日