当前位置: 首页 > news >正文

leetcode 1895(前缀和+暴力枚举)

1895: 最大的幻方

幻方指的是一个k x k填满整数的方格阵,且每一行、每一列以及两条对角线的和全部相等 。幻方中的整数不需要互不相同

显然,每个1 x 1的方格都是一个幻方。

思路:前缀和+暴力枚举

1.暴力检查

  • 因为m, n ≤ 50,所以最大可能的边长kmin(m,n)
  • 从大到小尝试k,找到第一个满足条件的幻方即可返回

2.优化计算

  • 我们可以预处理行前缀和和列前缀和,以便快速计算任意子矩阵的行和与列和
  • 对角线可以通过直接遍历来求和

3.算法步骤

预处理行前缀和与列前缀和,从大到小枚举边长 k
枚举子矩阵的左上角 (r,c),检查该子矩阵是否为幻方

  • 计算第一行的和作为目标值
  • 检查所有行的和是否等于目标值
  • 检查所有列的和是否等于目标值
  • 检查两条对角线的和是否等于目标值

如果找到,直接返回当前 k
如果都没找到,返回 1(因为 1×1 总是幻方)

class Solution { public: int largestMagicSquare(vector<vector<int>>& grid) { int m=grid.size(),n=grid[0].size(); vector<vector<int>> rowPrefix(m+1,vector<int>(n+1,0)); //预处理行前缀和和列前缀和 vector<vector<int>> colPrefix(m+1,vector<int>(n+1,0)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ rowPrefix[i+1][j+1]=rowPrefix[i+1][j]+grid[i][j]; colPrefix[i+1][j+1]=colPrefix[i][j+1]+grid[i][j]; } } auto getRowsum=[&](int r,int c1,int c2){ return rowPrefix[r+1][c2+1]-rowPrefix[r+1][c1]; }; auto getColsum=[&](int c,int r1,int r2){ return colPrefix[r2+1][c+1]-colPrefix[r1][c+1]; }; for(int k=min(m,n);k>1;k--){ //从大到小枚举边长k for(int r=0;r+k<=m;r++){ for(int c=0;c+k<=n;c++){ int target=getRowsum(r,c,c+k-1); bool ok=true; for(int i=r;i<r+k;i++){ if(getRowsum(i,c,c+k-1)!=target){ ok=false; break; } } if(!ok) continue; for(int j=c;j<c+k;j++){ if(getColsum(j,r,r+k-1)!=target){ ok=false; break; } } if(!ok) continue; int diag1=0,diag2=0; for(int d=0;d<k;d++){ diag1+=grid[r+d][c+d]; diag2+=grid[r+d][c+k-1-d]; } if(diag1!=target || diag2!=target) continue; return k; } } } return 1; } };
http://www.cnnetsun.cn/news/673083.html

相关文章:

  • 金融系统数据审计:数据库触发器操作指南
  • Meta-Llama-3-8B-Instruct长文本摘要:8k上下文测试
  • TTS服务并发低?CosyVoice-300M Lite压力测试优化案例
  • Sambert镜像功能全测评:多情感语音合成的真实表现
  • DeepSeek-OCR实战:10分钟搭建文档识别系统,成本不到3块钱
  • Z-Image-Turbo消费级适配:RTX 3090部署实战步骤
  • 3大中文ASR模型对比:云端GPU 3小时完成测试选型
  • Supertonic性能优化:多线程并行处理技巧
  • Qwen1.5-0.5B技术揭秘:高效设计
  • BGE-M3进阶教程:自定义训练数据微调模型
  • 语音活动检测新选择:FSMN-VAD离线方案来了
  • BGE-Reranker-v2-m3与ColBERT对比评测:语义匹配效率谁更强
  • Qwen3-Reranker-4B功能测评:多语言文本排序真实表现
  • 深度解析PDF-Extract-Kit|科哥打造的多模态PDF提取解决方案
  • ComfyUI新闻配图:媒体机构快速响应热点事件的图像生产
  • 避坑指南:Qwen3-4B-Instruct常见问题全解,写作更高效
  • CAPL脚本网络节点仿真从零实现教程
  • 一键启动Qwen3-Reranker-0.6B:文本检索效率提升秘籍
  • OpenMV颜色识别原理剖析:如何区分相似色块
  • Z-Image-Turbo环境调试:CUDA out of memory错误应对策略
  • TurboDiffusion医疗影像应用:CT扫描动态展示生成可行性探讨
  • NewBie-image-Exp0.1技术深度:Flash-Attention 2.8.3如何加速动漫生成
  • TensorFlow-v2.15实战教程:如何提升模型训练效率300%
  • FST ITN-ZH错误排查指南:遇到CUDA报错?云端镜像零配置
  • Qwen-Image菜单设计:餐馆老板的智能解决方案
  • 没服务器怎么部署SenseVoice?1小时1块云端即开即用
  • UI-TARS-desktop快速入门:云端免配置,1小时1块马上上手
  • 大模型学习day01 python基础
  • GLM-ASR-Nano-2512性能瓶颈:识别与优化5步法
  • IndexTTS-2-LLM + Sambert双引擎部署案例:高可用语音系统