zoukankan      html  css  js  c++  java
  • 洛谷P1341 无序字母对[无向图欧拉路]

    题目描述

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

    输入输出格式

    输入格式:

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

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

    输出格式:

    输出满足要求的字符串。

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

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

    输入输出样例

    输入样例#1:
    4
    aZ
    tZ
    Xt
    aX
    输出样例#1:
    XaZtX
     

    说明

    【数据规模与约定】

    不同的无序字母对个数有限,n的规模可以通过计算得到。


    看似很水,实际暴露了很多问题

    1.无向图欧拉路,de全为even或两个odd

    2.欧拉路是vis判边走过没有不是点

    3.字典序 加一个栈里逆序输出,这个栈要n*n大小

    4.大小写字母虽然中间夹了几个字符,也没必要写个ID函数

    5.%别打成/

    //
    //  main.cpp
    //  luogu1341
    //
    //  Created by Candy on 11/11/2016.
    //  Copyright © 2016 Candy. All rights reserved.
    //
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    const int N=105,INF=1e9;
    int n,cn=58,a[N],u,v;
    char s[5];
    //inline int id(char c){if(c>='a') return c-'a'+26;else return c-'A';}
    //void print(int x){if(x<26) putchar(x+'A');else putchar(x-26+'a');}
    int de[N],g[N][N];
    int vis[N][N],st[N*N],top=0;
    void dfs(int u){
        for(int i=0;i<cn;i++) if(g[u][i]&&!vis[u][i])
            vis[u][i]=vis[i][u]=1,dfs(i);
        st[++top]=u;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%s",s);
            //u=id(s[0]);v=id(s[1]);//printf("edge %d %d
    ",u,v);
            u=s[0]-'A';v=s[1]-'A';
            de[u]++;de[v]++;g[u][v]=g[v][u]=1;
        }
        int cnt=0,s1=cn,s2=cn;
        for(int i=0;i<=cn;i++) if(de[i]){
            s1=min(i,s1);
            if(de[i]%2) cnt++,s2=min(i,s2);
        }
        
        if(cnt==0) dfs(s1);
        else if(cnt==2) dfs(s2);
        else {puts("No Solution");return 0;}
        while(top) putchar(st[top--]+'A');
    }
  • 相关阅读:
    Tensorflow遇到的问题
    IPAdr2023网络计算器IP Address Computer Edition 2023 download
    AtomCalcor 2022 原子计算器下载Atom Calcor Edition 2022 download
    js对手机软键盘的监听
    GDB 命令行调试之路(全 19)
    URLConnection 的陷阱 java_关于connection reset 服务器cgi
    详解KMP算法 另一种思路
    EF中提示一个或者多个验证出现错误,查看 EntityValidationErrors 详细信息的解决方法
    C#中数字日期转中文小写日期
    想要淘便宜淘白菜的请访问 http://31tj.com
  • 原文地址:https://www.cnblogs.com/candy99/p/6055930.html
Copyright © 2011-2022 走看看