zoukankan      html  css  js  c++  java
  • 1339 字符串王国的种族

    1339 字符串王国的种族

    题目描述

    在一个字符串王国里生活着许许多多的字符串,如:abcde、adfsddf、dss等等。当然他们也同人类一样有许许多多的种族。如果两个字符串有共同的前缀,那么他们就拥有共同的祖先,便认为他们是同一族的。现在给你一份王国所有成员的名单,请你找出王国里有多少个种族!

    输入要求

    第一行输入一个奇数n,表示有n个字符串(n<=100)。
    接下来n行每行输入一个字符串(字符串长度不超过100)。

    输出要求

    输出种族的个数

    测试数据

    //输入
    5
    saf
    dfdsf
    fghhgfh
    ffgf
    dfdsfbg
    
    //输出
    3
    

    AC代码

    两个字符串有共同的前缀,那么他们就拥有共同的祖先。其实只要看第一个字符是否相同,相同则一定有共同的前缀,然后并查集操作就可以了

    #include <bits/stdc++.h>
    using namespace std;
    int n,a[105],cnt=0;
    string s[105];
    int find(int x)
    {
    	while(x!=a[x]) x=a[x];
    	return x;
    }
    void myunion(int x,int y)
    {
    	x=find(x);y=find(y);
    	if(x!=y) a[x]=y;	
    }
    int main() {
    	cin>>n;
    	for(int i=0;i<n;i++) cin>>s[i];
    	for(int i=0;i<n;i++) a[i]=i;
    	for(int i=0;i<n;i++) 
    	{
    		for(int j=i+1;j<n;j++)  
    		{
    			if(s[i][0]==s[j][0])  myunion(i,j);
    		}
    	}
    	for(int i=0;i<n;i++) 
    	{
    		if(a[i]==i) cnt++;
    	}
    	cout<<cnt<<endl;
    	return 0;
    }
    
  • 相关阅读:
    centos下如何关闭xdebug扩展
    xdebug调试的原理
    取值再拼接跳转链接
    描点返回-动画
    比较旧的写法:验证车牌、手机号、电话、qq等
    jQuery实现ie浏览器兼容placeholder效果
    CSS3的REM设置字体大小
    整理前端问题
    css3 hover效果
    ie7 a标签强制不换行兼容问题
  • 原文地址:https://www.cnblogs.com/xxhao/p/14326348.html
Copyright © 2011-2022 走看看