#include <stdio.h>
#include <stdlib.h>
int m,n,output;
int map[50][10000];
int map_r[51][10000];
int run(int x,int y)
{
int max_r;
int max2_r;
max_r = findit(x,y,1);
max2_r = findit(x,y,-1);
if(max_r>max2_r)
return max_r;
else
return max2_r;
}
int findit(int x,int y,int toward)
{
int max_f;
int store_f=0;
max_f = map[x-1][y];
while(y<n&&y>=0){
store_f += map[x-1][y]+map_r[x-1][y];
if(store_f>max_f)
max_f = store_f;
store_f -= map_r[x-1][y];
y += toward;
}
return max_f;
}
int main()
{
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&map[i][j]);
}
}
for(int i=0;i<m-1;i++){
for(int j=0;j<n;j++){
map_r[i+1][j] = run(i+1,j);
}
}
for(int i=0;i<n;i++){
map_r[m][i] = run(m,i);
if(map_r[m][i]>output)
output = map_r[m][i];
}
printf("%d",output);
return 0;
}
這是我的程式碼,卻一直在14和19 TLE 其他AC 不知要如何簡化QQ