2012年3月10日
摘要: 最优矩阵链乘问题:状态转移方程如下:(比较繁琐,稍后会有优化版)f[i][j] = f[i][k] + f[k][j] + a[j] - [i];//a[]存储切点i,j代表线段的头和尾利用递推运算,先把线段之间没有切点的收费情况即f[i][j]赋值为零,然后利用这个推出线段之间只有一个切点的线段,如此不断扩大,当线段的头尾一个是0一个是给出的长度,也就AC了:代码如下:(此代码不理想,浪费空间,但可AC)#include<stdio.h>#include<string.h>#define INF 0x7fffffff#define MAXN 1000 + 10int 阅读全文
posted @ 2012-03-10 22:32 BFP 阅读(568) 评论(0) 推荐(1) 编辑
摘要: 这道题不是我做出来的:但是方法很值得学习,首先通过这种方法我才知道在线oj判题的时候不是一个数据一个数据的而是一个文件一组,也就是判断程序运行时间的输入不是一个数据而是一组数据,所以本题采用了打表法。因为用正常的思路复杂度接近O(n3),时间接近三秒,而用打表法只需运行一遍算出7489种状态,再输入时只需调用即可,时间为0.03s左右:代码如下:#include<stdio.h>#include<string.h>#define MAXN 8000int n;int V[5], f[MAXN];void prepare(){ int i, j; n = 7489; me 阅读全文
posted @ 2012-03-10 10:40 BFP 阅读(249) 评论(0) 推荐(0) 编辑