HDU 1257 最少拦截系统(①动态规划--最长子序列 ②暴力+贪心 模拟)

题目链接(点击打开链接

解法一:直接(暴力+贪心)模拟:对于每一个飞过来的导弹,遍历所有已有的系统的当前的值,找出一个最合适(即系统目前高度与导弹高度相差最小,PS:贪心思想)的系统。若是没找到合适的系统,说明此时导弹已经高于所有系统的目前高度 ,那么就重新设立一座新的系统 。若是找到了最合适的系统的话,就用该导弹的高度更新所找的系统的目前值。

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define N 1000

int n;										//导弹的个数 
int daodan[N];								//存储各个导弹的高度	
int xitong[N];								//存储各个系统目前的高度(即最低高度) 

int main(){
	while(cin >> n){
		for(int i = 0;i < n;++i){		   //读入各个导弹的高度 
			cin >> daodan[i];
		}
		xitong[0] = daodan[0];			   //对于第一颗导弹,构建第一座系统 
		int len = 1;					   //记录已构建的系统个数,由于第一个系统已经构建好了,所以初始化为1 
		int minindex = 0;				   //记录对于
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值