64. Minimum Path Sum

本文详细解析了在非负数网格中寻找从左上角到右下角的最小路径和问题。通过动态规划方法,逐步计算每个格子的最小路径和,最终得到目标格子的最小路径总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

64. Minimum Path Sum

Medium

175445FavoriteShare

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.

Example:

Input:
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.

Accepted

275,981

Submissions

559,273

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m=grid.size();
        int n=grid[0].size();
        int dp[m][n]={};
        dp[0][0]=grid[0][0];
        for(int i=1;i<n;i++){//0行n列
        	dp[0][i]=dp[0][i-1]+grid[0][i];
        }
        for(int i=1;i<m;i++){//0列n行
        	dp[i][0]=dp[i-1][0]+grid[i][0];
        }
        for(int i=1;i<m;i++){//除了第一行和第一列之外的部分
        	for(int j=1;j<n;j++){
        		dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i][j];
        	}
        }
        return dp[m-1][n-1];
    }
};

 

<think>好的,我现在需要解决用户在使用ArcGIS的Python 2.7.14脚本时遇到的运行时错误。用户的问题出现在计算相关系数后,打印统计摘要时,Describe对象没有minimum和maximum属性,导致AttributeError。 首先,我应该回忆一下arcpy.Describe函数的功能。Describe通常用于获取数据集的属性,比如栅格数据的格式、范围等,但可能不直接提供统计值如最小值和最大值。用户代码中使用arcpy.Describe(r.save(...))后的描述对象来获取min和max,这可能不正确,因为Describe可能不包含这些统计信息。 接下来,正确的做法应该是使用Raster对象的getRasterInfo()方法,或者使用arcpy.GetRasterProperties_management工具来获取统计信息。比如,用户可能需要调用arcpy.CalculateStatistics_management先计算统计值,再通过GetRasterProperties获取具体的min和max。 另外,用户代码中保存栅格后,可能需要先计算统计信息,否则统计值可能不存在。原代码中可能在保存后立即尝试获取统计值,但此时统计信息尚未生成,导致错误。因此,应该在保存栅格后调用CalculateStatistics,然后再用GetRasterProperties来获取最小和最大值。 同时,用户的环境可能存在栅格统计信息未自动计算的情况,尤其是在脚本中生成新栅格后。所以显式地计算统计信息是必要的步骤。 另外,检查用户代码中的路径是否正确,确保输出栅格已经正确保存,并且有权限访问。不过根据错误信息,问题更可能出在获取统计的方式上,而不是路径问题。 最后,修改代码的步骤应该是:在保存栅格后,使用arcpy.CalculateStatistics_management,然后使用arcpy.GetRasterProperties_management分别获取min和max属性,并确保使用正确的语法,如将路径传递给这些函数。 总结修改步骤为:替换Describe为GetRasterProperties,并添加CalculateStatistics确保统计信息存在。同时,处理可能的异常或路径问题,确保代码兼容Python 2.7和ArcMap的环境。</think>=== 修正后的代码 === ```python # 计算相关系数(保持原有计算逻辑) cov_sum = Raster(os.path.join(output_gdb, "cov_sum")) k_std = Raster(os.path.join(output_gdb, "k_std")) t_std = Raster(os.path.join(output_gdb, "t_std")) r = cov_sum / (23 * k_std * t_std) r = Con(r < -1, -1, Con(r > 1, 1, r)) # 强制限制值域[-1,1] r.save(os.path.join(output_gdb, "k_t_correlation")) # === 关键修改:使用栅格属性获取方法 === # 先强制计算统计值(避免统计信息未生成) arcpy.CalculateStatistics_management( in_raster=os.path.join(output_gdb, "k_t_correlation"), skip_existing=False # 强制重新计算 ) # 获取最小值最大值(正确方法) r_min = arcpy.GetRasterProperties_management( in_raster=os.path.join(output_gdb, "k_t_correlation"), property_type="MINIMUM" ).getOutput(0) r_max = arcpy.GetRasterProperties_management( in_raster=os.path.join(output_gdb, "k_t_correlation"), property_type="MAXIMUM" ).getOutput(0) # 打印结果(保留两位小数) safe_print(u"相关系数计算完成!值范围:{:.2f} ~ {:.2f}".format(float(r_min), float(r_max))) ``` === 错误原因解析 === 1. **Describe对象无统计属性**:`arcpy.Describe()` 返回的元数据对象不直接包含栅格统计值(如最小值/最大值),它主要用于描述数据格式、坐标系等基础属性 2. **正确的统计获取方式**: - 先用 `CalculateStatistics` 生成统计信息 - 再通过 `GetRasterProperties` 提取具体属性 3. **强制类型转换**:`GetRasterProperties` 返回的是字符串类型,需转换为 `float` 才能格式化输出 === 操作建议 === 1. 确保输出文件夹 (`output_gdb`) 有写入权限 2. 如果栅格数据量较大,可在 `CalculateStatistics` 中添加 `x_skip_factor` 和 `y_skip_factor` 参数加速计算(例如设置为10) 3. 在 ArcMap 的 Python 窗口中运行时,建议先执行 `arcpy.CheckOutExtension("Spatial")` 激活 Spatial Analyst 扩展 **验证方法**:在 ArcMap 中手动右键点击生成的 `k_t_correlation` 栅格 → 属性 → 源选项卡,查看统计值是否与脚本输出一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值