首页 > 代码库 > hdu--1078--记忆化搜索
hdu--1078--记忆化搜索
啊 真无语 ~
这题 一读完 就有感觉是 记忆化搜索 但就是一下子写不出来 =-=
后来参考了别人的代码 发现还是有模糊的地方
好好记住就是了 ~
touch me
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 const int size = 110; 6 int sum; 7 int n , m; 8 int dir[4][2]={1,0,0,1,-1,0,0,-1}; 9 int arr[size][size];10 int dp[size][size];11 12 int dfs( int x , int y )13 {14 int mmax = 0;15 if( dp[x][y] )16 return dp[x][y];17 for( int i = 1 ; i<=m ; i++ )18 {19 for( int j = 0 ; j<4 ; j++ )20 {21 int xx = x + (dir[j][0])*i;22 int yy = y + (dir[j][1])*i;23 if( arr[xx][yy]>arr[x][y] && xx>=0 && xx<n && yy>=0 && yy<n )24 {25 mmax = max( mmax , dfs(xx,yy) );26 }27 }28 }29 dp[x][y] = mmax + arr[x][y];30 if( sum<dp[x][y] )31 sum = dp[x][y]; 32 return dp[x][y];33 }34 35 int main()36 {37 cin.sync_with_stdio(false);38 int i , j;39 while( cin >> n >> m )40 {41 sum = 0;42 memset( dp , 0 , sizeof(dp) );43 if( n==-1 && m==-1 )44 break;45 for( i = 0 ; i<n ; i++ )46 {47 for( j = 0 ; j<n ; j++ )48 {49 cin >> arr[i][j];50 }51 }52 dfs( 0 , 0 );53 cout << sum << endl;54 }55 return 0;56 }
递归的思想 真的很重要 从后往前 得到结果~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。