程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 最大子矩陣和變形(poj 1964 hdu 1505)

最大子矩陣和變形(poj 1964 hdu 1505)

編輯:C++入門知識

解釋詳見:訓練指南P50   [cpp] #include <iostream>    #include <algorithm>    using namespace std;   int up[1005][1005],lef[1005][1005],righ[1005][1005];   char a[1005][1005];    int main()   {   www.2cto.com     int t,m,n,ans,lo,ro,i,j;       char s;       cin>>t;       while(t--)       {           cin>>m>>n;           for(i=0;i<m;i++)           for(j=0;j<n;j++)               cin>>a[i][j];           ans=0;           for(i=0;i<m;i++)           {   lo=-1;  ro=n;               for(j=0;j<n;j++)                {                   if(a[i][j]=='R') {lef[i][j]=up[i][j]=0; lo=j;}                   else                    {                       up[i][j]=(i==0)?1:up[i-1][j]+1;                       lef[i][j]=(i==0)?lo+1:max(lef[i-1][j],lo+1);                   }               }               for(j=n-1;j>=0;j--)               {                   if(a[i][j]=='R') {righ[i][j]=n; ro=j;}                   else  righ[i][j]=(i==0)?ro-1:min(righ[i-1][j],ro-1);                   ans=max(ans,up[i][j]*(righ[i][j]-lef[i][j]+1));               }           }           cout<<ans*3<<endl;       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved