dp 最优三角剖分问题
来源:互联网 发布:java方法调用方法 编辑:程序博客网 时间:2024/06/06 08:53
额,基本和算法分析上的差不多,只是更加了解dp的状态吧
#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<vector>#include<cstring>using namespace std;#define max 100int n; int t[max][max], s[max][max];int value[max][max]; int w(int i, int j, int k){ return value[i][j] +value[j][k] + value[k][i];}int MinWeight(int n, int t[max][max], int s[max][max]){ for(int i=1; i<=n; i++) t[i][i] = 0; for(int r=2; r<=n; r++) for(int i=1; i<=n-r+1; i++) { int j = i+r-1; t[i][j] = t[i+1][j] +w(i-1,i,j); s[i][j] = i; for(int k=0; k<i+r-1; k++) { int u = t[i][k] + t[k+1][j] + w(i-1,k,j); if(u<t[i][j]) { t[i][j] = u; s[i][j] = k; } } } return t[1][n];} int main(){ int ncase; int a, b, c; scanf("%d",&ncase); while(ncase--) { scanf("%d",&n); for(int i=1; i<=n*(n-1)/2; i++) { cin>>a>>b>>c; value[a][b] = c; value[b][a] = c; } int min = MinWeight(n, t, s); printf("%d\n",min); for(int i=1; i<n; i++) for(int j=i+1; j<i/2; j++) printf(" %d %d %d ",i, j, s[i][j]); } system("pause"); return 0;}
- dp 最优三角剖分问题
- 凸多边形最优三角剖分问题
- 凸多边形的最优三角剖分问题
- 凸边形最优三角剖分问题
- 最优三角剖分
- 最优三角剖分
- 最优三角剖分
- SMU 1106 - 凸多边形的最优三角剖分问题(区间DP)
- zoj3537 Cake 最优三角剖分(DP)
- 凸多边形最优三角剖分
- 凸多边形最优三角剖分
- 凸多边形最优三角剖分
- 凸多边形最优三角剖分
- 凸多边形最优三角剖分
- 凸多边形最优三角剖分
- 动态规划-凸多边形最优三角剖分问题
- 动态规划---凸多边形的最优三角剖分问题
- DP——最优矩阵链乘&&最优三角剖分
- DDL语句为什么不能回滚
- PB8.0应用程序编译发布技术研究
- 明晰C++内存分配的五种方法的区别
- 为什么使用二级指针
- 如何在PB中制作特殊形状数据窗口或按钮
- dp 最优三角剖分问题
- 给新人的建议并与新人共勉
- RMQ实现LCA
- 初级软件开发管理
- PB中的数据窗口自动刷新技术
- POJ-1006 生理周期(Biorhythms) 解题报告&AC代码
- 浅析PowerBuilder下动态SQL语句
- 数据结构单链表
- 关于模式对话框和非模式对话框(Form.Show()&Form.ShowDialog())