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());
    }
};
相关推荐
2 小时前
2.12矩阵问题,发牌,数字金字塔
线性代数·算法·矩阵
爱coding的橙子3 小时前
Day87:2.12:leetcode 动态规划8道题,用时3h
算法·leetcode·动态规划
passxgx4 小时前
12.2 协方差矩阵与联合概率
线性代数·矩阵·概率论
Σίσυφος19005 小时前
四元数 欧拉角 旋转矩阵
人工智能·算法·矩阵
2501_924878735 小时前
矩阵跃动AI口播智能体:自研语音引擎破解数字人嘴型滞后、情绪扁平、方言失真——以粤语政务短视频为例
人工智能·深度优先·动态规划·政务
沉睡的无敌雄狮5 小时前
政务AI口播落地:矩阵跃动一体机100%本地化部署与零数据出域——某省大数据局3个月验证
大数据·人工智能·深度优先·动态规划·政务
edisao6 小时前
第三章 合规的自愿
jvm·数据仓库·python·神经网络·决策树·编辑器·动态规划
闻缺陷则喜何志丹6 小时前
【动态规划 AC自动机】P9188 [USACO23OPEN] Pareidolia S|普及+
c++·算法·动态规划·洛谷·ac自动机
赛博云推-Twitter热门霸屏工具6 小时前
从手动运营到自动化矩阵:Twitter热门霸屏的技术化实现逻辑
矩阵·自动化·twitter
cpp_25016 小时前
P10250 [GESP样题 六级] 下楼梯
数据结构·c++·算法·动态规划·题解·洛谷