hdu 4105 贪心思想「建议收藏」

hdu 4105 贪心思想

大家好,又见面了,我是全栈君。

淋漓尽致的贪心思想

波谷一定是一位数。波峰一位数不够大的时候加入到两位数就一定够大了的。

当在寻找波谷碰到零了就自然当成波谷。

当在寻找波峰时碰到零时,将前面的波谷加到前一个波峰上。让当前的零做波谷,使得波谷的值尽量小,这就是本题最关键的贪心思想。一直想不到。

代码中:a表示前一个值,b表示当前考虑的值,tag为偶数时表示正在寻找波谷,奇数时在寻找波峰。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>

using namespace std;

char data[5999];

int main()
{
	int n, m, k;

	while(scanf("%d", &n) != EOF)
	{
		scanf("%s", data);
		//cout<<data<<endl;
		int a, b, tag = 0;
		a = 11;
		b = 0;
		int ans = 0;
		for(int i = 0; i < n; i ++)
		{
			b = (data[i] - '0');
			if(tag % 2 == 0){
				if(b < a){		
					a = b;
				}
				else
				{	
					i ++;
					a = data[i]-'0';
				}
			}
			else
			{
				if(b > a)
				{
					a = b;
				}
				else
				{
					if(b == 0)
					{
						while(data[i] == '0'){
							i ++;
							if(i >= n) break;	
						}
						//贪心思想,有0就一定让他做波谷,把原先的波谷a给到他的前一个波峰上
						a = 0;	//0做波谷 
						b = data[i]-'0';
						a = b;
					}
					else
					{
						i ++;
						a = b*10 + (data[i] - '0');
					}
				}
			}
			if(i >= n) break;
			ans ++; tag ++;
		}
		printf("%d\n", ans-1);		
	}
	
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115971.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月27日 下午11:00
下一篇 2022年1月28日 上午6:00


相关推荐

  • 常用的TSO命令

    常用的TSO命令常用的 TSO 命令原帖地址 http bluemainfram com comments php DiscussionID 73TSO 命令由 TSO 用户在 TSO 环境下发出 如在主菜单下选择 P 6 可进入 TSO 命令处理工具 用于启动 停止软件系统 检查 设置系统软硬件设备的运行情况 运行系统作业等等 由于受篇幅所限 本附录只能列出主要的 TSO 命令和常用的使用方法 详细情况可参考 S 39

    2026年3月17日
    2
  • 正则表达式常见用例

    正则表达式常见用例

    2022年3月12日
    53
  • 将JS对象转换为JSON字符串

    将JS对象转换为JSON字符串如果我用以下方法在 JS 中定义了一个对象 varj name binchen 如何将对象转换为 JSON 输出字符串应为 name binchen

    2026年3月18日
    0
  • elastic search数据库集群部署「建议收藏」

    elastic search数据库集群部署「建议收藏」ES数据库安装elasticasearchelasticsearch的概念:是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎ApacheLucene基础上的搜索引擎,使用Java语言编写。1、elasticsearch和MongoDB/redis/memcache一样,是非关系性数据库是一个接近实时的搜索平台,从所索引这个文档到能够被搜索到只有一个轻微的延迟,企业应用定位:采用restfullapi标准的可扩展和高可用的实时数据分析

    2022年6月9日
    45
  • interrupt interrupted_interrupt的用法

    interrupt interrupted_interrupt的用法(一).关于interrupt()    interrupt()并不直接中断线程,而是设定一个中断标识,然后由程序进行中断检查,确定是否中断。    1.sleep()&interrupt()    线程A正在使用sleep()暂停着:Thread.sleep(100000);    如果要取消他的等待状态,可以在正在执行的线程里(比如这里是B)调用a.interr

    2025年7月16日
    4
  • 点击scrollview释放键盘触发touchesBegan方法

    点击scrollview释放键盘触发touchesBegan方法scrollView 本身继承了touch的响应事件,要从新自定义scrollView 的响应事件。所以添加一个手势事件:-(void)addGestureRecognizer{  UITapGestureRecognizer*sigleTap=[[UITapGestureRecognizeralloc]initWithTarget

    2022年7月25日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号