• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > Torus二维最大矩阵的高效算法求解

Torus二维最大矩阵的高效算法求解

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了torus,torus是什么意思,torus knot,torus游戏,3d torus等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:Torus 二维最大矩阵的高效算法求解
描述:

题:10827 - UVa Online Judge

Torus 上二维最大矩阵已知有能达 O(n^3) 的方法,不知有没有更高效的算法?

算法复杂度为 O(N^4):

/*
 * Sai Cheemalapati
 * UVA 10827: Maximum sum on a torus
 * O(N^4) solution 
 */

#include<algorithm>
#include<cstdio>

using namespace std;

int T, N;
int A[500][500];

int main() {
    scanf("%d", &T);
    while(T--) {
        scanf("%d", &N);
        for(int i = 0; i < N * 2; i++) {
            for(int j = 0; j < N * 2; j++) {
                if(i < N && j < N) {
                    scanf("%d", &A[i][j]);
                    A[i + N][j] = A[i][j + N] = \
                        A[i + N][j + N] = A[i][j];
                }
                if(i > 0) A[i][j] += A[i - 1][j];
                if(j > 0) A[i][j] += A[i][j - 1];
                if(i > 0 && j > 0) A[i][j] -= A[i - 1][j - 1];
            }
        }
        int ans = -1000000;
        for(int i = 0; i < N; i++) {
            for(int j = 0; j < N; j++) {
                for(int k = i; k < i + N; k++) {
                    for(int l = j; l < j + N; l++) {
                        int cur = A[k][l];
                        if(i > 0) cur -= A[i - 1][l];
                        if(j > 0) cur -= A[k][j - 1];
                        if(i > 0 && j > 0)
                            cur += A[i - 1][j - 1];
                        ans = max(ans, cur);
                    }
                }
            }
        }
        printf("%d\n", ans);
    }
}

解决方案1:

你基本可以认为目前靠谱的做法是O(n3)的。
虽然有一些论文在数字上稍微更好了一点,但是实际意义似乎不大(可能和我读书少有关系)

如果你有兴趣(看起来你是竞赛选手应该不会有兴趣)可以看论文,比如这个
Algorithms for the maximum subarray problem based on matrix multiplication

不过这篇可能不好找,A Sub-cubic Time Algorithm for the k-Maximum Subarray Problem里面有一部分讲了那个算法,这篇好像好找pdf。。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Torus二维最大矩阵的高效算法求解

相关文章

  • 2017-06-07 为什么我用官方JSSDK开发的程序在手机端点击上传按钮没反应
  • 2017-06-07 对于很大的N和一个比较大的质数p,如何快速计算nCk%p?
  • 2017-06-07 如何在Redis中的序列化数据里插入新数据?
  • 2017-06-07 mac下如何停止python服务?
  • 2017-06-07 两个思路:python模拟登陆页面和模拟操作windows程序窗口提交请求
  • 2017-06-07 python这个正则表达式有什么问题?
  • 2017-06-07 python爬虫(python)怎样在路由器上面安装ss服务端
  • 2017-06-07 使用JAVA如何构件Socket池,
  • 2017-06-07 安装jpype,与javaJDK后,出现错误故障模块名称: MSVCR90dll,pythonexe已停止工作
  • 2017-06-07 Mac下安装Nginx编译出错

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python里面除了import还有什么引入类的方法?
    • 为什么在JBOSS下删除了EJB但后台显示还存在
    • jboss421连接sqlserver2005,怎么把默认的Hypersonic改为sqlserver?
    • python爬虫(python)表单引用外键字段并进行加工处理
    • 如何判断C++获取outlook当前选中的内容是不是邮件
    • 使用PythonRQ的Python执行后台任务
    • 通过javascriptsdk,如何做到限制上传文件类型
    • 在helper里写了一个方法,想用一个button去触发执行,请问用button_to还是link_to,后边的参数应该如何配。
    • linuxsendmail服务器搭建
    • Pythonflask处理多栏json数据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有