码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划_拦截导弹

时间:2017-07-22 19:46:23      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:article   rac   tracking   i+1   str   amp   while   turn   pre   

被拦截的导弹应该依照飞来的高度组成一个非递增序列。求最长非递增序列的长度。

#include <iostream>
using namespace std;

int main()
{
	int h[2000], d[2000], c;			//h表示 高度值, d表示最优值, c是能拦截的最多导弹数 
	int count = 0;							//统计飞来的导弹数 
	while (cin >> h[count++] && h[count-1]);				//输入高度 
	d[count-1] = 1; 					// d[n] = 1
	c = 1;			//用动态规划计算全部的最优值
	for (int i = count - 2; i>=0; --i)
	{
		int max = 0;
		for (int j = i+1; j<count; ++j)
		{
			if ((h[i] >= h[j]) && max < d[j])
				max = d[j];
		}
		d[i] = max + 1;
		if (c < d[i])
			c = d[i];
	} 
	cout << c << endl;
	return 0;
} 


动态规划_拦截导弹

标签:article   rac   tracking   i+1   str   amp   while   turn   pre   

原文地址:http://www.cnblogs.com/yutingliuyl/p/7222103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!