您的位置:首页 > 其它

hdoj 1257 最少拦截系统 【贪心】

2014-08-05 19:54 183 查看
中文题,你懂得。。

策略:贪心

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257

直接上代码:

#include<stdio.h>
int s[30005], dp[30005];
int main()
{
	int n;
	while(scanf("%d", &n) == 1){
		int i, min = 0, x, m;  //min是最后的最少的系统数
		for(i = 0; i < n; i ++){
			scanf("%d", &s[i]);
			dp[i] = 1;  //标记有没有上一个系统解决掉
		}
		m = 0;
		while(m < n){
			x= 0; //每次都是从0开始循环
			while(dp[x] == 0&&x < n) ++x;  //如果被标记了 就找下一个
			if(x == n) break;
			dp[x] = 0;   //当做新系统的起始点, 同时标记
			++m;
			for(i = x+1; i < n; i ++){   
				if(dp[i] == 0) continue;
				if(s[x]>= s[i]){  //找满足条件的数
					x = i;
					dp[i] = 0;
					++m;
				}
			}
			++min;
		}
		printf("%d\n", min);
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: