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 |
记忆化搜索怎么过不了了..虽然40K memory的肯定是填表(递推),但是记忆化搜索肯定可以过的...我没加任何优化,0MS过了..程序也就44行,这还包括我习惯的空行. 写法其实很简单,标准DFS模板加上记忆就可以了 这里是程序,没过的可以看看 #include <stdio.h> int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; int map[101][101],d[101][101]; int xborder,yborder; int f(int x,int y){ if(d[x][y]) return d[x][y]; int i,rec=0,t=0,tx,ty; for(i=0;i<4;i++){ tx=x+dx[i]; ty=y+dy[i]; if(map[tx][ty]>=map[x][y] || tx<1 || ty<1 || tx>xborder || ty>yborder) continue; t=f(tx,ty); if(t>rec) rec=t; } rec+=1; d[x][y]=rec; return rec; } int main(){ freopen("pku1088.in","r",stdin); freopen("pku1088.out","w",stdout); scanf("%d %d\n",&xborder,&yborder); int i,j; for(i=1;i<=xborder;i++){ for(j=1;j<=yborder;j++) scanf("%d",&map[i][j]); scanf("\n"); } int now=0,best=0; for(i=1;i<=xborder;i++) for(j=1;j<=yborder;j++){ now=f(i,j); if(now>best) best=now; } printf("%d",best); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator