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(f0) n∗m−max(f0) 。

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());
    }
};
相关推荐
kyle~2 小时前
线性代数矩阵分解 --- QR分解
线性代数·矩阵
2601_956121978 小时前
背包基础篇(01、完全、分组、多重、混合)
c++·算法·动态规划
lilian23312 小时前
Harmony os 技术实战|拼豆制图43:压缩字符矩阵上线前如何拦住错位图纸
开发语言·前端·华为·矩阵·harmonyos
ASKED_201913 小时前
从矩阵到秩:理解大模型参数与 LoRA 微调
线性代数·矩阵
不辣的皮蛋君15 小时前
- 短视频矩阵怎么对接售后运营?的全面解析与应用指南
线性代数·矩阵
TKcloudmaster_H18 小时前
拆解TK跨境矩阵逻辑:不同区域该怎么规避违规风险
大数据·矩阵·新媒体运营·产品运营·流量运营
小小龙学IT19 小时前
GLM 开源图形学数学库深度解析:从向量、矩阵到四元数的完整实战
c++·矩阵·开源·mfc
Lyyaoo.1 天前
【矩阵】【中等】螺旋矩阵
线性代数·矩阵
evans在进步1 天前
LeetCode 64:最小路径和——Java 原地动态规划详解
java·leetcode·动态规划
ACP广源盛139246256732 天前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频