zoukankan      html  css  js  c++  java
  • 动态规划-tsp

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <memory.h>
     4 using namespace std;
     5 const int INF=0x3f3f3f3f,city=4;
     6 int main(){
     7     int a[city][city],dp[city][1<<city];
     8     memset(dp,INF,sizeof(dp));
     9     for(int i=0;i<city;i++){
    10         for(int j=0;j<city;j++){
    11             scanf("%d",&a[i][j]);
    12         }
    13     } 
    14     for(int i=0;i<city;i++)//初始化第一列 
    15         dp[i][0]=a[i][0];
    16     for(int j=1;j<(1<<(city-1));j++){//111 j<2^3 初始化剩余列 
    17         for(int i=0;i<city;i++){
    18             if(((j>>i-1)&1)==0){// i不在集合里面 关于位运算移动负数位,求出负数的补码,取低六位,进行移动。
    19                 for(int k=1;k<city;k++){
    20                     if(((j>>k-1)&1)==1){//对于集合里每一个元素开始min 
    21                         dp[i][j]=min(dp[i][j],a[i][k]+dp[k][j^(1<<k-1)]);
    22                     }
    23                 }
    24             }
    25         }
    26     }
    27     for(int i=0;i<city;i++){
    28         for(int j=0;j<(1<<city-1);j++){
    29             if(dp[i][j]!=INF)
    30                 cout<<dp[i][j]<<" ";
    31             else
    32                 cout<<"-1 ";
    33         }
    34         cout<<endl;
    35     }
    36     printf("最短路径是:"); 
    37     if(dp[0][(1<<city-1)-1]!=INF)
    38         cout<<dp[0][(1<<city-1)-1]<<endl;
    39     else
    40         cout<<"-1"<<endl;
    41 }
    View Code

  • 相关阅读:
    禁止鼠标多次点击选中div中的文字
    深入浅出 Nodejs 学习笔记 1
    svn 树冲突
    nodejs 按行读取 readline
    git版本控制器的基本使用
    规范javascript书写
    media query
    软件工程
    The sixth day
    The fifth day
  • 原文地址:https://www.cnblogs.com/hcl6/p/13974465.html
Copyright © 2011-2022 走看看