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());
    }
};
相关推荐
落羽的落羽7 小时前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
靠沿12 小时前
【动态规划算法】专题二——路径问题
算法·动态规划
欢璃13 小时前
笔试强训练习
java·开发语言·jvm·数据结构·算法·贪心算法·动态规划
oo哦哦14 小时前
深度解析:星链引擎全域智能营销矩阵系统的技术架构与实践
大数据·矩阵·架构
2601_9577875814 小时前
多平台矩阵账号防关联技术深度解析:2026年IP隔离与设备指纹的攻防战
网络·tcp/ip·矩阵
05候补工程师15 小时前
【408狂飙·数据结构】核心考点深度复盘:数组地址计算、特殊矩阵压缩存储与树的五大性质解题直觉
数据结构·笔记·线性代数·考研·算法·矩阵
AI科技星17 小时前
全域数学公理:基于32维超复数与易经卦爻的宇宙大一统理论(整理版)
c语言·开发语言·线性代数·量子计算·agi
承渊政道17 小时前
【贪心算法】(经典实战应用解析(五):单调递增的数字、坏了的计算器、合并区间、⽆重叠区间、⽤最少数量的箭引爆⽓球)
数据结构·c++·leetcode·贪心算法·排序算法·动态规划·哈希算法
2601_9577875817 小时前
矩阵流量转化漏斗拆解:从公域获客到私域成交的技术链路设计
线性代数·矩阵
AI_yangxi18 小时前
短视频矩阵系统哪家好点
大数据·人工智能·矩阵