把前n个碟子从第一个塔移动到第三个塔有两种方法:

1.把前n-1个移动到第二个塔,把第n个移动到第三个塔,然后把前n-1个从第二个移动到第三个;

2.把前n-1个移动到第三个塔,把第n个移动到第二个塔,然后把前n-1个继续移动到第一个的塔,把第N个移动到第三个塔,最后把前n个移动到第三个塔就行了;

状态转移方程:

a=dp[i][3-i-j][k-1]+matrix[i][j]+dp[3-i-j][j][k-1];
b=dp[i][j][k-1]+matrix[i][3-i-j]+dp[j][i][k-1]+matrix[3-i-j][j]+dp[i][j][k-1];
dp[i][j][k]=min(a,b);

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std; int matrix[][]; long long dp[][][]; int main()
{
for(int i=; i<; i++)
for(int j=; j<; j++)
scanf("%d",&matrix[i][j]);
int n;
long long a,b;
scanf("%d",&n);
for(int k=; k<=n; k++)
{
for(int i=; i<; i++)
for(int j=; j<; j++)
{
if(i!=j)
{
a=dp[i][-i-j][k-]+matrix[i][j]+dp[-i-j][j][k-];
b=dp[i][j][k-]+matrix[i][-i-j]+dp[j][i][k-]+matrix[-i-j][j]+dp[i][j][k-];
dp[i][j][k]=min(a,b);
}
}
}
cout<<dp[][][n]<<endl;;
}

最新文章

  1. linux下编译时,链接math库
  2. 如何在CentOS 5/6上安装EPEL 源
  3. 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案
  4. ios授权登录过程中一直提示“没有安装qq”
  5. (转载)OC学习篇之---@class关键字的作用以及#include和#import的区别
  6. j2se jndi
  7. Android Drawable系列(1):自定义背景以及注意事项
  8. zabbix监测图形界面显示方框乱码解决方法
  9. [JavaScript] 前端模块编程实现
  10. babel (三) babel polly-fill
  11. (转)CS域和PS域
  12. 032 Spark容错特性
  13. 《软件定义网络:SDN与OpenFlow解析》
  14. SQL字符串分割解析
  15. 将excel表导入到mysql中
  16. 根据需要通过代码的方式加载js文件
  17. Oracle RMAN-06023 和ORA-19693错误
  18. Java文件路径
  19. JSR303中的来验证数据信息
  20. http和https的异同

热门文章

  1. 关于Eclipse中的一些基本知识
  2. 关于JFace中的进度条对话框(ProgressMonitorDialog类)
  3. uiautomator日志文件转换为xml格式文件
  4. android之模拟器访问外网设置
  5. 【JavaScript DOM编程艺术(第二版)】笔记
  6. Opencv——将摄像头拍摄写成视频文件
  7. 对象创建型模式------Abstract Factory(抽象工厂)
  8. jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan
  9. java之多态的使用
  10. HDU 1058 Humble Number