首页 > 其他分享 >树木消杀问题

树木消杀问题

时间:2024-07-04 13:42:50浏览次数:2  
标签:return int 问题 虫子 树木 消杀 x1 maxab

一个小的算法题目

一排树中,每棵树上都有若干虫子,用一个数组表示。

消杀可以杀灭其中一棵树上的所有虫子,但相邻的两棵树上的虫子会飞走(不会落回到某棵树上)。

为了消灭最多的虫子,写一种算法选择出应该消杀哪些棵树,并求出能消灭的虫子数量。

实现

https://github.com/zongzw-learn/learn-go/tree/master/code-test/max-indvidials


package main

import "log"

func main() {
	a := []int{2, 3, 5, 4, 1, 4} // 0 2 5
	x, y := maxab(a, 0)
	log.Printf("max: %d, %v", x, y)
}


func maxab(a []int, o int) (int, []int) {
	if len(a) == 1 {
		return a[0], []int{o}
	}
	if len(a) == 2 {
		if a[0] > a[1] {
			return a[0], []int{o}
		} else {
			return a[1], []int{1 + o}
		}
	}

	x1, y1 := maxab(a[2:], 2+o)
	x2, y2 := maxab(a[1:], 1+o)
	if a[0]+x1 > x2 {
		return a[0] + x1, append([]int{o}, y1...)
	} else {
		return x2, y2
	}
}

标签:return,int,问题,虫子,树木,消杀,x1,maxab
From: https://www.cnblogs.com/zongzw/p/18283702

相关文章

  • STM32L073RZT 调试SPI问题
    现象描述:spi通信一次后,第二次通信spi的SR寄存器异常0xFF31(MODF,CRCERR,RXNE),通信失败。以下为调用流程及相关代码:NFC_ID();NFC_REG_B_TEST(); //SPI读voidSPI_Read_Data(uint8_t*w_data,uint32_tw_size,uint8_t*r_data,uint32_tr_size){SET_SPI......
  • javascript url 传递参数中文乱码问题解决方案
    在JavaScript中,传递URL参数时,如果参数包含中文字符,可能会出现乱码问题。解决这一问题可以使用encodeURIComponent和decodeURIComponent函数。这些函数会对URL参数进行编码和解码,确保特殊字符(包括中文字符)能够被正确传递和解析。以下是一个完整的解决方案示例: 1.......
  • IDEA Database DataGrip关于Hive连接驱动万能问题详解。。
    问题:默认下载的Hive驱动版本是3的,如果使用最新的3版本连接2版本的Hive会报错,报各种依赖问题。解决方案:需要下载对应版本的Hive驱动hive-jdbchadoop-common也需下载(版本不需要太严格,2和3版本都可)配置刚刚下载的依赖包(在弹出的finder文件位置,新建一个文件夹,文件夹的名称修改......
  • Collectors中的groupingBy和reducing 细节问题
    stream流中对数据进行先分组在聚合,一般会想到使用groupingBy和reducing,但是reducing中的identity是只会初始化一次的,所以我们传参的时候传的是Object,不是XXX::new,在reducing的合并函数中我们不能返回vo1或者vo2,只能new一个对象正确使用Map<String,StatisticsVo>collect=s......
  • linux创建用户后权限设置的问题
    1.创建用户设置用户名密码useradduserNamepasswduserName(会提示输入密码)2.给新用户添加分组,赋权限usermod-aGnew_groupusername;//添加附属组ueermod-gnew_groupusername;//设置为主组groups(username)//查看所属组id(username)//查看用户和组的信息roo......
  • 高并发场景下的热点key问题探析与应对策略
    目录一、问题描述二、发现机制三、解决策略分析 (一)解决策略一:多级缓存策略客户端本地缓存代理节点本地缓存 (二)解决策略二:多副本策略 (三)解决策略三:热点Key拆分与动态分散四、总结干货分享,感谢您的阅读!在高并发场景下,缓存作为前置查询机制,显著减轻了数据库的压......
  • detected dubious ownership in repository 问题彻底解决大全
    fatal:detecteddubiousownershipinrepositoryat'C:\lindexi\Code\Foo'isownedby:'S-1-5-21-469934170-xxx-xxx-1001'butthecurrentuseris:'S-1-5-21-469994170-aaa-bbb-1001' 这个问题给我很大困扰,我的电脑因为强制改用户名造成了大量bug,无法删除用户安全......
  • 【CMD 延迟扩展】FOR 语句读不到值的问题
    延迟扩展将导致批处理文件中的变量在执行时而不是在解析时扩展(变量赋值),此选项通过SETLOCALEnableDelayedExpansion命令打开。延迟扩展意味着用它的值替换它的变量。默认情况下,在执行每行之前,扩展只会发生一次,启用延迟扩展,可以使每次执行该行时都会进行扩展,或者说,对于FOR......
  • GaussDB(DWS)性能调优,解决DM区大内存占用问题
    本文分享自华为云社区《GaussDB(DWS)性能调优:DM区优化案例——维度表关联条件存在会计期》,作者:O泡果奶~。当前DM(P1、P3、CBGDM)存在维度表与主表关联时使用会计期作为关联条件,会导致出现大内存占用或未识别数据倾斜的问题【场景一】f.period_id=维度表.period_id1.1、【问题......
  • 解决gdb 在64位机器上显示sizeof(long)=4的问题
    问题:gdb在64位机器上显示sizeof(long)=4大家都知道在64位机器上,c语言的long类型占用8个字节,但今天因验证一个功能,启动gdb,执行了printsizeof(long)返回值为4,让人大为震惊,是服务器环境有问题吗?赶快编写一个最简单的c程序1#include<stdio.h>23intmain(void){4print......