首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

宁波市工程学院 1350 气坏了老虎乐坏了兔 记忆化搜索 帅呆了

2013-03-12 
宁波工程学院 1350 气坏了老虎乐坏了兔记忆化搜索帅呆了http://ac.nbutoj.com/Problem/view.xhtml?id1350

宁波工程学院 1350 气坏了老虎乐坏了兔 记忆化搜索 帅呆了

  • http://ac.nbutoj.com/Problem/view.xhtml?id=1350[1350] 气坏了老虎乐坏了兔
  • 时间限制: 2000 ms 内存限制: 65535 K
  • #include<stdio.h>#include<string.h>const int mod=1000000007;int n,m,a[2][150][150],step[4][2]={0,1,0,-1,1,0,-1,0};int main(){int i,j,x,y;while(scanf("%d %d",&n,&m)!=EOF){memset(a,0,sizeof(a));for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[0][i][j]=1;m--;for(int t=1;t<=m;t++){for(i=1;i<=n;i++)for(j=1;j<=n;j++)for(int k=0;k<4;k++){x=step[k][0]+i;y=step[k][1]+j;if(x>=1&&x<=n&&y>=1&&y<=n) a[1][i][j]=(a[1][i][j]+a[0][x][y])%mod; }for(i=1;i<=n;i++)for(j=1;j<=n;j++){a[0][i][j]=a[1][i][j];a[1][i][j]=0;}}int ans=0;for(i=1;i<=n;i++)for(j=1;j<=n;j++)ans=(ans+a[0][i][j])%mod;printf("%d\n",ans);}return 0;}  
    记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解一个状态,就将它的解保存下来,以后再次遇到这个状态的时候,就不必重新求解了。这种方法综合了搜索和动态规划两方面的优点,因而还是很有实用价值的。

  • 热点排行