Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
在这里可以过,0MS,其他地方不能过,不知道为什么???#include <stdio.h> int snow[1000][1000]; long a[1000][1000]; int x[4]={0,0,1,-1}; int y[4]={1,-1,0,0}; int n,m; int ok(int i,int j) { return i>=0&&i<=n&&j>=0&&j<=m; } long dp(int i,int j) { int k; if(a[i][j]) return a[i][j]; for(k=0;k<4;k++) { if(ok(i+x[k],j+y[k])) if(snow[i+x[k]][j+y[k]]>snow[i][j]) { if(a[i][j]<dp(i+x[k],j+y[k])+1) a[i][j]=dp(i+x[k],j+y[k])+1; } } return a[i][j]; } int main() { int i,j; long max; while(scanf("%d%d",&n,&m)!=EOF) { max=0; for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&snow[i][j]); for(i=0;i<n;i++) for(j=0;j<m;j++) { if(max<dp(i,j)) max=dp(i,j); } printf("%ld\n",max+1); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator