zoukankan      html  css  js  c++  java
  • UVA-10391 Compoud Words

    You are to find all the two-word compound words in a dictionary. A two-word compound word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary. Input Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 120,000 words. Output Your output should contain all the compound words, one per line, in alphabetical order. Sample Input a alien born less lien never nevertheless new newborn the zebra Sample Output alien newborn

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    #include<string>
    using namespace std;
    const int maxn=2e5;
    int a[maxn], t = -1, sum = 0;
    char s[maxn][30], ch1[30], ch2[30];
    
    int Hash(char *str)
    {
    	int seed = 31, hash = 0;
    	while (*str)
    		hash = hash * seed + *str++;
    	return hash & 0x7FFFFFFF;
    }
    int Find(int key, int l, int r)
    {
    	int mid = (l + r) / 2;
    	if(l>r) return 0;
    	if(a[mid]==key) return 1;
    	else if(a[mid]>key) Find(key, l, mid - 1);
    	else  Find(key, mid + 1, r);
    }
    int main()
    {
    	int i, j, k, l;
    	while(gets(s[++t])) a[t] = Hash(s[t]);
    	sort(a, a + t);
    	for (i = 0; i<t; i++)
    	{
    		l = strlen(s[i]);
    		for (j = 0; j<l - 1; j++)
    		{
    			for (k = 0; k <= j; k++)
    				ch1[k] = s[i][k];
    			ch1[j + 1] = '';
    			for (k = j + 1; k<l; k++)
    				ch2[k - j - 1] = s[i][k];
    			ch2[l - j - 1] = '';
    			if (Find(Hash(ch1), 0, t - 1) + Find(Hash(ch2), 0, t - 1) == 2) 
    			{
    				printf("%s
    ",s[i]);
    				break; 
    			}
    		}
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    Kafka中的数据清理(logdeletion)
    genymotion虚拟器笔记
    layui hover显示图片
    vue 导出到excel
    el-tree知识积累
    js 含有对象的数组去重
    苏宁易购价格爬取(golang)
    vue+elementui+beego笔记
    vue笔记
    beego笔记
  • 原文地址:https://www.cnblogs.com/csushl/p/9386502.html
Copyright © 2011-2022 走看看