滚动数组
摘要:在DP中很有帮助的滚动数组!昨晚做了一道题,开了一个int [5000][5000]的数组,OLE了,虽然可以用short [5000][5000]猥琐过,但毕竟只是特殊情况正确的方法是滚动数组压缩存储,整理了一下网上的资料:利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。不过经常还是用在DP题目中,因为DP题目是一个自下而上的扩展过程,我们常常用到是连续的解,前面的解往往舍弃!所以用滚动数组可以说是很有必要的。滚动数组 举个简单的例子:int i, d[100];d[0] = 1;d[1] = 1;for (i = 2; i < 100; i++) d[i] = d[i - 1
阅读全文
posted @
2012-04-03 08:33
hrbust_09zhangyabin
阅读(150)
推荐(0)
hdu1159--------------最长公共子序列(模板)
摘要:没事敲了个最长公共子序列,按照自己笔记本上模板算法! 先敲了一个递归算法的,敲时就感觉费事儿!一提交,果断超时!无语,..........还好哥有个非递归模板,敲完一交。31ms!差距好大啊,以后就用非递归吧!模板在此AC:#include<stdio.h>#include<string.h>char a[10001],b[10001];int c[10001][10001];int lcs_len(int m,int n){int i,j;for(i=0;i<=m;i++)c[i][0]=0;for(i=0;i<=n;i++)c[0][i]=0;for(i
阅读全文
posted @
2012-03-13 14:51
hrbust_09zhangyabin
阅读(126)
推荐(0)
简单DP-----------lig1147
摘要:今天一上午都在处理以前遗留下来的问题。以前不会的,无从下手的一下子都AC 了!好爽啊这道题是个简单动规,和数塔类似。动态转移方程 d[i][j]=min(d[i-1][j], d[i][j-1]) + d[i][j];最后输出d[n][n]即可。AC代码:#include<stdio.h>#include<string.h>//int data[1002][1002];int d[1002][1002];int n;int main(){int i,j;while(scanf("%d",&n)!=EOF){memset(d,100,sizeo
阅读全文
posted @
2012-03-03 09:59
hrbust_09zhangyabin
阅读(115)
推荐(0)