2713. 矩阵中严格递增的单元格数

2713. 矩阵中严格递增的单元格数


题目链接:2713. 矩阵中严格递增的单元格数

代码如下:

//动态规划+优化
//参考链接:https://leetcode.cn/problems/maximum-strictly-increasing-cells-in-a-matrix/solutions/2286920/dong-tai-gui-hua-you-hua-pythonjavacgo-b-axv0
class Solution 
{
public:
    int maxIncreasingCells(vector<vector<int>>& mat) 
    {
        map<int,vector<pair<int,int>>> graph;
        for(int i=0;i<mat.size();i++)
        {
            for(int j=0;j<mat[0].size();j++)
            {
                // 相同元素放在同一组,统计位置
                graph[mat[i][j]].emplace_back(i,j);
            }
        }

        vector<int> row_max(mat.size()),col_max(mat[0].size());
        for(auto& [_,pos]:graph)
        {
            vector<int> mx;// 先把最大值算出来,再更新 row_max 和 col_max
            for(auto& [i,j]:pos)
            {
                mx.push_back(max(row_max[i],col_max[j])+1);
            }
            for(int k=0;k<pos.size();k++)
            {
                auto& [i,j]=pos[k];
                row_max[i]=max(row_max[i],mx[k]);// 更新第 i 行的最大 f 值
                col_max[j]=max(col_max[j],mx[k]);// 更新第 j 列的最大 f 值
            }
        }
        return ranges::max(row_max);
    }
};
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用VBA创建一个具有特定条件的随机矩阵,可以通过定义一个二维组,并在该填充符合递增或递减条件的随机。以下是一个简单的VBA代码示例,该代码可以在Excel运行并生成所需的矩阵: ```vba Sub CreateRandomMatrix() Dim i As Integer, j As Integer Dim matrix(1 To 24, 1 To 300) As Double Dim columnIncrement As Double Dim rowIncrement As Double Dim startValueColumn As Double Dim startValueRow As Double ' 定义递增值和起始值 startValueColumn = 0.891815 startValueRow = 0.891815 columnIncrement = (0.654927 - startValueColumn) / 300 rowIncrement = (startValueRow - 0.926046) / 24 ' 填充矩阵 For i = 1 To 24 For j = 1 To 300 ' 计算当前单元格的值 matrix(i, j) = startValueColumn + (j - 1) * columnIncrement ' 如果计算值大于0.654927,则使用0.654927作为值 If matrix(i, j) > 0.654927 Then matrix(i, j) = 0.654927 End If ' 行递减逻辑 matrix(i, j) = startValueRow + (24 - i) * rowIncrement ' 如果计算值小于0.926046,则使用0.926046作为值 If matrix(i, j) < 0.926046 Then matrix(i, j) = 0.926046 End If Next j Next i ' 将矩阵内容写入工作表 Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' 假设矩阵将被写入名为Sheet1的工作表 For i = 1 To 24 For j = 1 To 300 ws.Cells(i, j).Value = matrix(i, j) Next j Next i MsgBox "矩阵创建完成!" End Sub ``` 请注意,上述代码仅作为示例,实际应用可能需要调整以满足特定需求。您可以将这段代码复制到Excel的VBA编辑器,并运行`CreateRandomMatrix`子程序来创建矩阵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值