动态规划_拦截导弹

来源:互联网 发布:mac系统 matlab 2016b 编辑:程序博客网 时间:2024/05/22 12:59

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

#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] = 1c = 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;} 


0 0
原创粉丝点击