zoukankan      html  css  js  c++  java
  • 一笔话问题

    大哥博客 

    https://blog.csdn.net/c20182030/article/details/52755880

    好骚啊

    注意  dfs时不能用 vis 不然会少访问;先毁灭图在访问;

    例题:

    问题描述 

        给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒)。请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现。 

    输入

    输入数据 

        第一行输入一个正整数n。 

        以下n行每行两个字母,表示这两个字母需要相邻。 

    输出

    输出数据 

        输出满足要求的字符串。 

        如果没有满足要求的字符串,请输出“No Solution”。 

        如果有多种方案,请输出前面的字母的ASCII编码尽可能小的(字典序最小)的方案 

     

    样例输入 Copy

    4
    aZ
    tZ
    Xt
    aX

    样例输出 Copy

    XaZtX
    代码
    #include <bits/stdc++.h>
    using namespace std;
    #define ri register int 
    const int M =1005;
    struct setbian{
        int net,to;
    }bian[M];
    int cent ,head[M],du[M],num,kaishi,trmp,vis[M],arr[M][M];
    char ans[M];
    void add(int a,int b)
    {
        bian[++cent].net=head[a],head[a]=cent;
        bian[cent].to=b;
    }
    void dfs(int k)
    {    
        for(ri i=1;i<=150;i++)
          if(arr[k][i]==1)
           {
                 arr[i][k]=0;
                 arr[k][i]=0;
                 dfs(i);
           }
        ans[++trmp]=k;
    }
    int m;
    int main(){
        scanf("%d",&m);
        for(ri i=1;i<=m;i++)
        {  char c;
           int a,b;
            cin>>c;
            a=c;
            cin>>c;
            b=c;
          arr[a][b]=arr[b][a]=1;
           du[a]++,du[b]++;
        }
        for(ri i='A';i<='z';i++)
        {
            if(du[i]%2==0) continue;
            if(du[i]%2==1) 
            {
                num++;
                if(kaishi==0) kaishi=i;
            }
        }
        if(num!=0&&num!=2) 
        printf("No Solution");
        else
        {  if(kaishi==0) 
           {  int i='A';
                 while(du[i]==0) i++;
                 kaishi=i;
           }
            dfs(kaishi);
            if(trmp<m+1) printf("No Solution");
            else
            for(ri i=trmp;i>=1;i--)
            {
                printf("%c",ans[i]);
            }
        
        }
    }
    View Code


  • 相关阅读:
    云? 云! 晕! 云计算适合创业公司么?
    批量转移Windows Server的DNS设置
    Signs that you are a bad programmer
    IsNull Function in PeopleSoft MetaSQL
    JS绘制曲线图
    Why does my shared clipboard not work?
    C#入门详解(2)
    C#入门详解(1)
    分享范玮琪最初的梦想
    像战士一样生活
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/11574767.html
Copyright © 2011-2022 走看看