poj1050最大子矩阵和
這篇是看了別人的報告寫的,就當是屢屢思路好了.
題目大意。給定一個n階矩陣(方陣),每一個元素中存在一個數字.任務就是求出一個最大的子矩陣使得矩陣元素之間的和是最大的.
n=100;
1.矩陣A[m][n]的和能夠直接 sum+=A[i][j] ( i = 0 to n-1 j=0 to n-1); 還能夠求出第i列的和p[i],再將所在列加起來,(當然行是同理的).
2.因此所選的矩陣的行k能夠枚舉(0<=k<=n-1),此時能夠現將列加起來,然后找到這些列中連續最大和就可以.這就是選出的矩陣最大和.
3.在全部矩陣中選出最大和的一個。
/*Source Code Problem: 1050 User: Memory: 388K Time: 32MS Language: GCC Result: AcceptedSource Code*/#include <stdio.h>int max(int a,int b){return a>b?a:b; } int main(){ int i,j,k,n; int ans=-0xfffffff; int A[101][101]={0}; scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&A[i][j]); } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ int add[101]={0},d[101]={0}; for(k=0;k<n;k++){ int l; for(l=i;l<=j;l++){ add[k]+=A[l][k]; } } d[0]=add[0]; ans=max(ans,d[0]); for(k=0;k<n;k++){ d[k]=d[k-1]>0?d[k-1]+add[k]:add[k]; ans=max(ans,d[k]); } } } printf("%d\n",ans); return 0; }
轉載于:https://www.cnblogs.com/yxwkf/p/5410217.html
總結
以上是生活随笔為你收集整理的poj1050最大子矩阵和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cisco 交换机通过console 导
- 下一篇: 梦到别人的皮鞋是什么意思