zoukankan      html  css  js  c++  java
  • 7.22每日一题题解

    Perfect Keyboard

    涉及知识点:

    • 深搜
    • 贪心
    • 思维

    solution:

    • 首先通过题面,我们可以很轻松的得到no的条件
    • -一个字母有两个以上的字母和它相邻
    • -成为一个环(这样的必定有一个字母和它的邻居不是相邻的)
    • 然后我们讨论一下输出yes 的情况
    • -我们发现只要用邻接链表把每个字母的邻居存起来
    • -然后在用dfs输出就行

    std:

    #include <cstdio>
    #include <algorithm>
    #include<iomanip>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <vector>
    #include <set>
    #include <queue>
    #include <cstring>
    #include<stack>
    #include <cassert>
    #include<map>
    
    
    using namespace std;
    typedef long long LL;
    
    LL   n, k, m ;
    LL i,j,g;
    set<int> v[300];
    bool st[100];
    bool vis(int n ){
        return n>2?false:true;
    }
    void dfs(int u , int fa ){
        if(st[u]==0){
            putchar(u);
            st[u]=1 ;
        }
        for(auto &k : v[u]){
            if(k==fa)continue;
            dfs(k,u);
        }
    }
    int main()
    {
       cin>>n;
       while(n--){
            string s;cin >>s;
            int len = s.size();
            if(len==1){
                cout<<"YES"<<endl;
                cout<<"bacdefghijklmnopqrstuvwxyz"<<endl;
                continue ;
            }
            for(int i='a';i<='z';i++){
                v[i].clear();
                st[i] = 0;
            }
            for(int i=1;i<len;i++){
                v[s[i]].insert(s[i-1]);
                v[s[i-1]].insert(s[i]);
            }
            int  cnt=0 ,pos =-1 , flag =1 ;
            for(int i='a';i<='z';i++){
                if(vis(v[i].size())==false){
                   flag =0 ;break;
                }
                if(v[i].size()==1) cnt ++,pos= i;
                }
            if(!flag || cnt !=2){
                cout<<"NO"<<endl;
                continue;
            }
            cout<<"YES"<<endl;
            dfs(pos,-1);
            for(int i='a';i<='z';i++)dfs(i, -1 );
            cout<<endl;
    
    
    
            }
    
    
    
        return 0;
    
    }
    
    
  • 相关阅读:
    anoconda 安装jieba库
    数据挖掘算法
    统计学方法论
    PowerBI 的简单介绍
    Numpy的补充(重要!!)
    Mysql语法顺序和执行顺序
    快速激活Navicat Premium 12
    day4-Mysql数据库基础操作
    day3-Mysql多实例配置
    day2-Mysql5.6.36编译安装
  • 原文地址:https://www.cnblogs.com/QFNU-ACM/p/13356916.html
Copyright © 2011-2022 走看看