翻转后1的数量(dp)

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String s = sc.next();
        
        int cnt1 = 0;  // 原本1的个数
        int[] gain = new int[n + 1];
        
        // 构造gain数组
        for (int i = 1; i <= n; i++) {
            if (s.charAt(i - 1) == '1') {
                cnt1++;
                gain[i] = -1;  // 翻转会减少一个1
            } else {
                gain[i] = 1;   // 翻转会增加一个1
            }
        }
        
        // DP数组
        int[] dp = new int[n + 1];
        dp[1] = gain[1];
        int maxGain = dp[1];
        
        // 动态规划求最大子段和
        for (int i = 2; i <= n; i++) {
            dp[i] = Math.max(gain[i], dp[i - 1] + gain[i]);
            maxGain = Math.max(maxGain, dp[i]);
        }
        
        System.out.println(cnt1 + maxGain);
    }
}

最大子段和问题

相关推荐
Full Stack Developme4 小时前
Python Calendar 模块教程
java·服务器·python
kyle~4 小时前
机器视觉---ViBe算法
人工智能·算法·计算机视觉
Loch4 小时前
Spring AI 实战:构建一个“懂上下文”的智能对话机器人 (MCP 模式)
java
CoovallyAIHub4 小时前
如何在 2025 年构建强大的实时视频检测?
深度学习·算法·计算机视觉
李贺梖梖4 小时前
Maven 设置项目编码,防止编译打包出现编码错误
java·maven
SimonKing4 小时前
继老乡鸡菜谱之后,真正的AI菜谱来了,告别今天吃什么的烦恼...
java·后端·程序员
假客套4 小时前
2025 FastExcel在Java的Maven项目的导出和导入,简单易上手,以下为完整示例
java·maven·fastexcel
有梦想的攻城狮4 小时前
Maven中的settings.xml文件配置详解
xml·java·maven·settings.xml
wearegogog1234 小时前
液压位置控制源代码实现与解析(C语言+MATLAB联合方案)
java·c语言·matlab