zoukankan      html  css  js  c++  java
  • 无序字母对

    题目描述

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

    输入输出格式

    输入格式:

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

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

    输出格式:

    输出满足要求的字符串。

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

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

    输入输出样例

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

    说明

    【数据规模与约定】

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

    分析:

    本题只需要对每两个字母连一条无向边,然后跑一边欧拉回路即可,所以我又水了一道模板题???

    CODE:

     1 #include <cmath>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 using namespace std;
     7 const int M=1005;
     8 int rd[M],n,g[M][M],tot;
     9 char re[3],pat[M];
    10 int work(char c){
    11     if (c>='A'&&c<='Z') return c-'A'+1;
    12     return c-'a'+27;
    13 }
    14 char work2(int c){
    15     if (c<=26) return c+'A'-1;
    16     return c-27+'a';
    17 }
    18 void add(int x,int y){
    19     rd[x]++,rd[y]++;
    20     g[x][y]=g[y][x]=1;
    21     return;
    22 }
    23 void dfs(int now){
    24     for (int i=1;i<=52;i++){
    25         if (!g[now][i]) continue;
    26         g[now][i]=g[i][now]=0;dfs(i);
    27     }
    28     pat[++tot]=work2(now);
    29     return;
    30 }
    31 int main(){
    32     scanf("%d",&n);
    33     for (int i=1;i<=n;i++){
    34         scanf("%s",re+1);
    35         add(work(re[1]),work(re[2]));
    36     }
    37     int now=0,fir=53;
    38     for (int i=1;i<=52;i++)
    39         if (rd[i]&1) now++,fir=min(fir,i);
    40     if (now&&now-2){printf("No Solution");return 0;}
    41     if (now) dfs(fir);
    42     else {
    43         for (int i=1;i<=52;i++) if (rd[i]) fir=min(fir,i);
    44         dfs(fir);
    45     }
    46     for (int i=tot;i>=1;i--) putchar(pat[i]);
    47     return 0;
    48 }
  • 相关阅读:
    lua协程一则报错解决“attempt to yield across metamethod/C-call boundary”
    web server && web framework角色区分
    throttle在程序中的作用
    如何将SVN patch的修改做成old&new文件
    lua 环境揭秘
    lua module package.seeall选项
    lua module环境探秘
    lua OOP实现对象的链式调用
    项目管理(一)任务分配
    项目管理(三)展望
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11185630.html
Copyright © 2011-2022 走看看