程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj3311(Hie with the Pie)狀壓dp

poj3311(Hie with the Pie)狀壓dp

編輯:C++入門知識

題目鏈接:http://poj.org/problem?id=3311

解法:標准的狀壓dp類型,先floyd獲得兩兩之間最短距離。然後dp[i][j]表示剩下集合i沒走,已經走到j的最短距離;


代碼:

/******************************************************
* @author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//freopen ("in.txt" , "r" , stdin);
using namespace std;

#define eps 1e-8
#define zero(_) (abs(_)<=eps)
const double pi=acos(-1.0);
typedef long long LL;
const int Max=15;
const int INF=1e9+7;

int dist[Max][Max];
int dp[(1<<13)+3][13];
int n;
int getans(int st,int la)
{
    if(dp[st][la]!=-1)
        return dp[st][la];
    int ans=INF;
    for(int i=0; i<=n; i++)
    {
        if((st&(1<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved