• poj 1958 Strange Towers of Hanoi (dp)


    做的第一个题目给算法的题。

    过程说的很明了,先把n-k个用四个柱子的方法移动到B,再把k个用三个柱子的方法移动到D,最后把n-k个用四个柱子的方法移动到D。n-k个共移动了两次,三个柱子移动的最少步数我们知道为2^n-1,总的移动步数即为f[i-j]*2+t[j],得转移方程f[i] = Min(f[i], f[i-j]*2+t[j])。

    因为比较有信心,直接用大号交的,没用majia,一交就傻眼了,竟然RE!好吧,真活该,数组开那么小干嘛,又不要钱...

    代码:

    #include<iostream>
    #define Min(a, b)   a>b?b:a
    using namespace std;

    int t[13], f[13];
    int main(){
        int i, j ;
        for(i=0; i<=12; i++)
            t[i] = (1 << i) - 1 ;
        for(i=1; i<=12; i++){
            f[i] = 100 ;
            for(j=1; j<=i; j++)
                f[i] = Min(f[i], f[i-j]*2+t[j]) ;
            cout << f[i] << endl ;
        }
        return 0 ;

    } 

  • 相关阅读:
    socket函数深入
    kubeadm join 节点
    coreos 安装
    网络地址转换
    kubeadm 安装k8s
    How to alert for Pod Restart & OOMKilled in Kubernetes
    kubeadm 集群安装后状态
    calico
    teehee提权
    homeassistant
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2330664.html
Copyright © 2020-2023  润新知