百炼 4121 股票买卖

博客围绕百炼4121股票买卖问题展开,这是一个动态规划问题。通过建立dp1和dp2两个数组,分别正向与反向遍历数组求得。dp1[i]表示到第i天卖出的最大利润,dp2[i]表示从第i天买进的最大利润,最大利润为max{dp1[i]+dp2[i],i=1…n}。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百炼4121 股票买卖

做法

一个很有意思的动态规划问题,参照了别人的答案,才理解做法,注意点如下:

  1. 建立两个dp数组,命名为dp1,dp2
    其中dp1[i]代表到第i天为止卖出的股票所能获得的最大利润
    而dp2[i]代表到从第i天开始买进股票所能获得的最大利润
    分别正向与反向遍历数组,求得dp1,dp2
    注意
    这种做法的可以获得正确答案的原因是:要获得dp1[i]的利润,买入的那一天一定小于等于i,而要获得dp2[i]的利润,卖出的那一天一定大于等于i
    所以,最大的利润就是max{dp1[i]+dp2[i] ,i=1…n}咯!
  2. 注意求dp1[i]时要涉及dp1[i-1],求dp2[i]时要涉及dp2[i+1],所以数组下标从1到n比较好搞
  3. 最大值和最小值的设定就不墨迹了

代码如下

// 
#include <cstdio>
#include <algorithm>

using namespace std;

int num_group;
int num;
int stocks[100010];
int dp1[100010];
int dp2[100010];
int main()
{
	scanf("%d", &num_group);
	for (int i = 0; i < num_group; i++)
	{
		scanf("%d", &num);
		for (int j = 1; j <= num; j++)
		{
			scanf("%d", &stocks[j]);
		}
		fill(dp1, dp1 + 100010, 0);
		fill(dp2, dp2 + 100010, 0);
		dp1[0] = -0x7fffffff;
		int minnum = 0x7fffffff;
		for (int j = 1; j <= num; j++)
		{
			minnum = min(stocks[j], minnum);
			dp1[j] = max(dp1[j - 1], stocks[j] - minnum);
		}
		dp2[num + 1] = -0x7fffffff;
		int maxnum = -0x7fffffff;
		for (int j = num; j >= 1; j--)
		{
			maxnum = max(stocks[j], maxnum);
			dp2[j] = max(dp2[j + 1], maxnum - stocks[j]);
		}
		int result = 0;
		for (int j= 1; j <= num; j++)
		{
			result = max(result, dp1[j] + dp2[j]);
		}
		printf("%d\n", result);
	}
	return 0;
}

刚开始学算法,欢迎交流

在集成 Spring AI 与阿里百炼(阿里系大模型)时,通常需要依赖 Spring AI Alibaba 框架,该框架专为集成阿里系大模型而设计,能够与 Spring AI 标准兼容,使得开发者可以便捷地使用阿里百炼的能力[^1]。 ### 集成步骤概述 1. **引入依赖** 在 `pom.xml` 文件中添加 Spring AI Alibaba 的依赖。确保使用的版本与当前 Spring Boot 和 Spring AI 的版本兼容。 ```xml <dependency> <groupId>com.alibaba.spring.ai</groupId> <artifactId>spring-ai-dashscope-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> ``` 2. **配置 API 密钥和模型参数** 在 `application.yml` 文件中配置 DashScope 的 API 密钥以及模型参数。阿里百炼模型可以通过 `chat.model` 配置项指定。 ```yaml spring: ai: dashscope: api-key: your-api-key chat: model: qwen-max # 这里可以根据需求替换为其他阿里百炼模型 ``` 3. **编写代码调用模型** 使用 Spring AI 提供的抽象接口,例如 `ChatClient`,来调用阿里百炼模型进行推理。以下是一个简单的代码示例: ```java import org.springframework.ai.chat.client.ChatClient; import org.springframework.stereotype.Service; @Service public class AiService { private final ChatClient chatClient; public AiService(ChatClient chatClient) { this.chatClient = chatClient; } public String generateResponse(String prompt) { return chatClient.prompt() .user(prompt) .call() .content(); } } ``` 4. **安全配置和优化** 在集成过程中,需要注意 API 密钥的安全性,避免将其硬编码到代码中或提交到版本控制系统中。推荐使用 Spring 的配置文件加密工具,或者将 API 密钥存储在环境变量中。此外,根据具体需求调整模型参数,如温度、最大输出长度等,以优化模型的表现[^2]。 5. **持续更新与维护** 由于 AI 技术和框架在不断发展,建议开发者持续关注 Spring AI Alibaba 的官方文档和更新日志,以获取最新的功能支持和性能优化[^2]。 ### 注意事项 - **兼容性**:确保使用的 Spring AI Alibaba 版本与当前的 Spring Boot 版本兼容。 - **模型选择**:根据具体应用场景选择合适的阿里百炼模型,例如 `qwen-max` 适用于复杂任务,`qwen-plus` 适用于平衡性能和成本的场景。 - **调用限制**:注意阿里百炼的 API 调用频率限制和配额管理,避免因超限导致服务中断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值