編程練習-勇者鬥惡龍

貪心算法例子:


你的國王中有一條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日

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章