zoukankan      html  css  js  c++  java
  • HDU

    题意:给出20个城市与其相邻的3个点,给出起始点,(经过其他所有城市然后回到原处)然后输出所有路径(并且字典序最小)
    思路: 用dfs来求出路径,然后对应字典序最小就对每个城市连接的城市先排一次顺序

    完整代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int g[25][5];
    int tot;//记录路径数以及到达的第i个点 
    int ans[25];
    int vis[25];
    int m;//起点处 
    void dfs(int s,int cnt){
        if(cnt>19) return;//终止 
        //从s开始的步骤为cnt结束
        for(int i=0;i<3;i++){
            if(cnt==19&&g[s][i]==m){
                cout<<++tot<<": ";
                for(int i=0;i<=19;i++){
                    cout<<" "<<ans[i];
                }
                cout<<" "<<m<<endl;
                return ;
            }else if(vis[g[s][i]]!=1){//下一个位置没有被访问过 
                ans[cnt+1] =  g[s][i];
                vis[g[s][i]]=1; 
                dfs(g[s][i],cnt+1);
                vis[g[s][i]]=0;//回溯 
            }
        } 
        
    }
    int main(){
        int s[3];
        //输入图 
        for(int i=1;i<=20;i++){
            cin>>s[0]>>s[1]>>s[2];
            sort(s,s+3);
            g[i][0] = s[0];
            g[i][1] = s[1];
            g[i][2] = s[2];
        }
        int S;
        
        while(cin>>S){
            if(!S) break;
            tot = 0;
            memset(vis,0,sizeof(vis));
            m = S,vis[m] = 1;//先记录后vis判断 
            ans[0] = m;
            dfs(S,0);
        }
        return 0;
    } 
  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11265608.html
Copyright © 2011-2022 走看看