#include
#define m 5
#define n 5
//說明:矩陣的行列必須對應m,m的值
struct node;
//取得單行最大值函式
int getdnmax(int dharr[n])
//水平面逐漸上公升
for(i=0;i<=m;i++)
} for(m=j;mfor(n=m+1;nwhile(d[n].tag==0&&n<=n-1)
if(n==n)
else
if(d[n].tag==1)
else}}
if(tag==1)
}for(k=0;kif(i==d[k].height)}}
//演算法限制最後一行資料無論多大都無法記錄下來,所以加上了一條判斷
if(d[n-1].height>max) max=d[n-1].height;
return max;//返回最大值
}void main(),,,,};//給的陣列
//*************************===
int resarr[m][n];
int arr[n];
int i,j,k;
int n,m;
int deep;
//獲取柱狀圖並組成資料陣列
for(i=0;i//求單行柱狀式
//行不變,列變化求值
for(m=0;mn=i;
deep=0;
while(arr[n][m]==0&&nn++;//行向下深入
//記錄深入程度
deep+=1;
}arr[m]=deep;//將向下縱深的值存入陣列
}max[log]=getdnmax(arr);
log+=1;}//
max=max[0];//求最大max值
for(n=1;nif(max[n]>max) max=max[n];
}printf("max-linyijuzhenmainji=[%d]\n",max);
ps:m是行,n是列
求矩陣的最大子矩陣面積
問題引入 求解直方圖中最大的矩形面積 核心思想 讓二維陣列轉換成多層的一維陣列,再根據一維陣列構建直方圖 主函式,讓二維陣列轉換成多層的一維陣列,再根據一維陣列構建直方圖 public intmaxrecsize int map int maxarea 0 int height newint map...
最大全0子矩陣問題
題意 給定乙個01矩陣,求 1.最大全0正方形面積 2.最大全0子矩陣面積 我是分割線 對於第一問,我們有o nm 的動態規劃解法 設f i j 表示以i,j為右下角的最大正方形邊長 正確性可以自己yy一下 對於第二問有許多o nm 的奇怪解法,具體可以參照2003年福州第三中學王知昆的 用極大化思...
1159 最大全0子矩陣
f i,j 表示以 i,j 為右下角的最大全0子矩陣的邊長 若a i j 1,f i,j 0 否則 f i,j min 1 這樣求得的是最大全0正方形子矩陣 要求長方形矩陣,上述思路行不通 假設以 i,j 為右下角的最大矩陣 12 它可能是3 4 4 3 2 6 6 2 1 12 12 1 按上述思...