博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 10827 Maximum sum on a torus 最大矩阵和
阅读量:4973 次
发布时间:2019-06-12

本文共 1088 字,大约阅读时间需要 3 分钟。

题目链接:

题意描述:给出一个n*n矩阵,把第一行和最后一行粘一起,把第一列和最后一列粘一起,形成一个环面,求出这个环面中最大的矩阵和。

算法分析:首先复制n*n这个矩阵,形成由4个这样小矩阵组成的大矩阵,然后在这个大矩阵里找出最大矩阵和,一看貌似和poj1050这道题有些相似,但是这道题数据大一些,O(150^4)应该会超时吧。我们可以这样想,先枚举这个最大和矩阵的左上角在大矩阵中的位置,然后枚举最大和矩阵的行数和列数,在枚举过程中处理最大和,然后更新答案即可。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #define inf 0x7fffffff 8 using namespace std; 9 const int maxn=160;10 11 int n,an[maxn][maxn];12 int r[maxn],c[maxn];13 14 int main()15 {16 int t;17 scanf("%d",&t);18 while (t--)19 {20 scanf("%d",&n);21 for (int i=1 ;i<=n ;i++)22 {23 for (int j=1 ;j<=n ;j++)24 {25 scanf("%d",&an[i][j]);26 an[i+n][j]=an[i][j+n]=an[i+n][j+n]=an[i][j];27 //构成了四个小矩阵形成的大矩阵28 }29 }30 memset(r,0,sizeof(r));31 memset(c,0,sizeof(c));32 int ans=0;33 //x 和 y枚举最大和矩阵的左上角在第一个小矩阵中的位置34 for (int x=1 ;x<=n ;x++)35 {36 for (int y=1 ;y<=n ;y++)37 {38 for (int j=0 ;j
ans) ans=r[i];48 }49 }50 }51 }52 printf("%d\n",ans);53 }54 return 0;55 }

 

转载于:https://www.cnblogs.com/huangxf/p/4418808.html

你可能感兴趣的文章
<译>Zookeeper官方文档
查看>>
Android sharedUserId 使用
查看>>
伟大架构师的秘密
查看>>
Select_full_join 与 Select_range_check 与Sort_merge_passes
查看>>
win32可以自定义消息
查看>>
四大域对象的作用范围
查看>>
Liferay7 BPM门户开发之43: Gradle依赖管理
查看>>
在webapp上使用input:file
查看>>
idea git 注意事项
查看>>
整理 iOS 9 适配中出现的坑(图文)(转)
查看>>
Hibernate继承映射(@Inheritance)
查看>>
Oracle、Microsoft SQL Server、Mysql
查看>>
iPhone入门学习——iPhone静态库学习笔记
查看>>
C# Winform 拷贝共享文件夹文件包含输入共享用户及密码
查看>>
hadoop map端的超时参数
查看>>
NS3 日志(Logging)、命令行参数、Tracing系统概述(转载)
查看>>
保存程序配置到ini文件里
查看>>
C#提取汉字拼音首字母的方法
查看>>
Anaconda3 安装报错 bunzip2: command not found
查看>>
一步步学习微软InfoPath2010和SP2010--第十四章节--高级选项(1)--InfoPath规则检查器...
查看>>