zoukankan      html  css  js  c++  java
  • hdu1224Free DIY Tour

    看题目时忽略了一个条件,就是只能从1 到2,不可以从2到1,其实这个原本就应该排除掉的,可是我还在犹豫这个用不用考虑

    接着弄上我的代码,不过presentance error

    #include "iostream"
    #include "string.h"
    using namespace std;
    int main(){
      int ncase,top=1,map[110][110],dp[110],num[110],n,i,m,a,b,j,list[110],path[110];
      cin>>ncase;
      while(ncase--){
        cin>>n;
        memset(num,0,sizeof(num));
        for(i=1;i<=n;i++)cin>>num[i];
        cin>>m;
        memset(map,0,sizeof(map));
        memset(dp,0,sizeof(dp));
        for(i=1;i<=m;i++){
          cin>>a>>b;
          map[a][b]=1;
        }
        for(i=1;i<n+1;i++){
          for(j=i+1;j<=n+1;j++){
            if(map[i][j]&&dp[j]<dp[i]+num[j]){
              dp[j]=dp[i]+num[j];
              path[j]=i;
            }
          }
          //for(j=1;j<=n+1;j++)cout<<dp[j]<<' ';cout<<endl;
        }
        j=n+1;list[1]=1;
        for(i=2;;i++){
          list[i]=path[j];
          if(path[j]==1)break;
          j=path[j];
        }
        cout<<"CASE "<<top++<<'#'<<endl;
        cout<<"points : "<<dp[n+1]<<endl;
        cout<<"circuit : ";
        for(j=i;j>=1;j--){
          cout<<list[j];
          if(j!=1)cout<<"->";
        }cout<<endl;
      }
    }

    网上的答案

    #include<iostream>
    #include<string>
    using namespace std;
    
    int mi[105],dp[105],ans[105],f[105];
    bool map[105][105];
    
    int main()
    {
        int ca,n,m;
        int i,j,x,y,p=1;
        cin>>ca;
        while(p<=ca)
        {
            memset(dp,0,sizeof(dp));
            memset(map,0,sizeof(map));
            cin>>n;
            for(i=1;i<=n;i++)
               cin>>mi[i];
            mi[n+1]=0;
            cin>>m;
            for(i=1;i<=m;i++)
            {
                cin>>x>>y;
                map[x][y]=1;
            }
            f[1]=-1;
            for(i=2;i<=n+1;i++)
                for(j=1;j<i;j++)
                   if(map[j][i]&&mi[i]+dp[j]>dp[i])
                   {
                       dp[i]=mi[i]+dp[j];
                       f[i]=j;
                      } 
            int k=n+1;
            i=0;
            while(f[k]!=-1)
            {
                ans[i++]=f[k];
                k=f[k];
            }   
            cout<<"CASE "<<p<<'#'<<endl;
            cout<<"points : "<<dp[n+1]<<endl;
            cout<<"circuit : ";
            for(j=i-1;j>=0;j--)
              cout<<ans[j]<<"->";
              cout<<'1'<<endl;
            if(p<ca)
              cout<<endl;
             p++;
        }
        return 0;
    }
  • 相关阅读:
    resin
    tomcat
    vba打开输入文件
    获取文件夹下所有文件2
    获取文件夹下所有文件
    修改Execl中sheet名的指定字符串为指定字符串
    SpringMVC入门到精通(一)
    Java JDBC
    Java反射
    Java日期格式化
  • 原文地址:https://www.cnblogs.com/dowson/p/3287835.html
Copyright © 2011-2022 走看看