100290. 使矩阵满足条件的最少操作次数

https://leetcode.cn/problems/minimum-number-of-operations-to-satisfy-conditions/description/

正难则反。

暴力的遍历每一修改的情况,0-9;根据前一列的状态进行转移过来,

下面是状态转移方程
f ( i , j ) = m a x ( f ( i , j ) , f ( i + 1 , k ) + c n t ( i , k ) ) k ! = j ; f(i, j) = max(f(i, j),f(i+1, k)+cnt(i, k)) k!=j; f(i,j)=max(f(i,j),f(i+1,k)+cnt(i,k))k!=j;
c n t ( i , j ) :第 i 列值为 j 的个数; cnt(i, j):第i列值为j的个数; cnt(i,j):第i列值为j的个数;

最后直接 n ∗ m − m a x ( f [ 0 ] ) n*m-max(f[0]) n∗m−max(f[0]) 。

cpp 复制代码
class Solution {
public:
    int minimumOperations(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        vector<vector<int>> cnt(n, vector<int>(10,0));
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                cnt[j][grid[i][j]]++;
            }
        }
        vector<vector<int>> dp(n, vector<int>(10, 0));
        for(int i=n-1;i>=0;i--){
            for(int j=0;j<10;j++){
                if(i == n-1){
                    dp[i][j] = cnt[i][j];
                }else{
                    for(int k = 0;k<10;k++){
                        if(k == j) continue;
                        dp[i][j] = max(dp[i][j],dp[i+1][k]+cnt[i][j]); 
                    }
                }
            }
        }
        return n*m-*max_element(dp[0].begin(), dp[0].end());
    }
};
相关推荐
会Tk矩阵群控的小木4 小时前
rcs安卓增强短信群发系统搭建与API集成实战教程
矩阵·新媒体运营·安卓·个人开发·tk
2601_957786775 小时前
多平台账号矩阵管理的技术路径演变:从人工运维到AI驱动的全链路资产化
人工智能·矩阵
2601_957786775 小时前
AI驱动短视频矩阵管理:SaaS工具如何重构企业内容营销工作流
人工智能·矩阵·重构
Undergoer_TW5 小时前
SLAM实战避坑笔记:基础矩阵退化场景分析与解决方案
笔记·线性代数·矩阵
珊瑚里的鱼7 小时前
【动态规划】第N个泰波那契数
算法·动态规划
2601_957786778 小时前
企业获客矩阵系统:2026年从“流量焦虑“到“智能获客“的技术演进
大数据·人工智能·矩阵
2601_9577867710 小时前
企业社媒矩阵系统深度解析:2026年,从“人力密集“走向“智能体驱动“的运营变革
java·大数据·矩阵
05候补工程师11 小时前
【考研数学·线性代数】核心考点与解题笔记:从线性方程组到二次型满分通关指南
经验分享·笔记·线性代数·考研·算法·矩阵
珊瑚里的鱼13 小时前
【动态规划】三步问题
算法·动态规划
hai31524754313 小时前
复数流态矩阵计算器 · 使用说明
数学建模·矩阵·抽象代数