zoukankan      html  css  js  c++  java
  • 单向TSP

    这一道题很明显的DP思路,可以直接上线性DP

    #include<bits/stdc++.h>
    using namespace std;
    int m,n,a[15][105],f[15][105],ans,first,nxt[15][105];
    int main(){
        while(~scanf("%d %d",&m,&n)){
            for(int i=1;i<=m;i++)
             for(int j=1;j<=n;j++)
              scanf("%d",&a[i][j]);
            ans=0x3f3f3f3f;
            for(int j=n;j>=1;j--)//逆推
             for(int i=1;i<=m;i++){
                 if(j==n)f[i][j]=a[i][j];
                 else{
                     int rs[3]={i-1,i,i+1};
                     if(i==1)rs[0]=m;
                     if(i==m)rs[2]=1;
                     sort(rs,rs+3);//保证字典序最小
                     f[i][j]=0x3f3f3f3f;//初始化
                     for(int k=0;k<3;k++)
                      if(f[i][j]>f[rs[k]][j+1]+a[i][j])
                       f[i][j]=f[rs[k]][j+1]+a[i][j],nxt[i][j]=rs[k];//记录路径    
                }
                if(j==1&&f[i][j]<ans)ans=f[i][j],first=i;//注意出现n=1的情况要放在外面
             }
             printf("%d",first);
             for(int i=nxt[first][1],j=2;j<=n;i=nxt[i][j],j++)
              printf(" %d",i);
            printf("
    %d
    ",ans);
        }
    } 
  • 相关阅读:
    Docker 第一章 安装测试
    时区
    操作系统层虚拟化
    KVM
    基于秘钥的登录认证
    Hypervisor
    通过域名区分不同网站服务
    硬件虚拟化
    虚拟化初识
    nginx rewrite (转发)
  • 原文地址:https://www.cnblogs.com/coder-cjh/p/11422651.html
Copyright © 2011-2022 走看看