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 |
[新手]有那位大牛可以幫我看一下嗎!!!各位大牛給的數據都過了...還是wa.. #include<cstdio> #include<cstdlib> #include<cstring> using namespace std; int max(int i, int j){ if(i>j) return i; return j; } int max4(int i, int j, int m, int n){ return max(i,(max(j,max(m,n)))); } int dp(int b[][110],int a[][110],int i, int j){ if(b[i][j]>0) return b[i][j]; int up,down,left,right; if(a[i+1][j] < a[i][j] && a[i+1][j]>=0)down = dp(b,a,i+1,j); else down = 0; if(a[i-1][j] < a[i][j] && a[i-1][j]>=0)up = dp(b,a,i-1,j); else up=0; if(a[i][j+1] < a[i][j] && a[i][j+1]>=0)right = dp(b,a,i,j+1); else right=0; if(a[i][j-1] < a[i][j] && a[i][j-1]>=0)left = dp(b,a,i,j-1); else left=0; b[i][j] = max4(up,down,right,left)+1; } void dfs(int b[][110], int a[][110],int r,int c){ for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) if(b[i][j]==0) dp(b,a,i,j); } int main(){ int r,c,ans=1;; int a[110][110]; int dp[110][110]; scanf("%d %d", &r,&c); memset(dp,0,sizeof(dp)); for(int i=1; i<=r;i++) for(int j=1; j<=c;j++) scanf("%d", &a[i][j]); for(int i=0; i<=r+1; i++){ dp[i][0] = a[i][0] = -1; dp[i][c+1] = a[i][c+1] = -1; } for(int i=0;i<=c+1;i++){ dp[0][i] = a[0][i] = -1; dp[r+1][i] = a[r+1][i] = -1; } dfs(dp,a,r,c); for(int i=0;i<=r+1;i++){ for(int j=0;j<=c+1;j++) if(dp[i][j]>ans) ans = dp[i][j]; } printf("%d\n", ans); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator