程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva10887Concatenation of Languages

uva10887Concatenation of Languages

編輯:C++入門知識

[cpp]
#include<cstdlib> 
#include<iostream> 
#include<cstdio> 
#include<cmath> 
#include<set> 
#include<cstring> 
#include <algorithm> 
#define M 5368 
#define N 2250000 
#define inf 0x7f7f7f7f 
using namespace std; 
char str[N][20]; 
char a[1500][10],b[1500][10]; 
int head[N],next[N]; 
int hash(char a[])//////////// 

    int sum=0; 
    for(int i=0; a[i]&&i<10; i++)//不同的方法,效率不同 
    { 
        sum=sum*26+a[i]-'a'+1; 
    } 
    if(sum<0) 
        sum=-sum; 
    return sum%N; 

int insert(char a[],int r) 

    int h=hash(a);//h還會用到,要保留!!wa 
//    h=head[h];//錯誤 
    int p=head[h];//// 
    while(p!=-1) 
    { 
        if(!strcmp(a,str[p])) 
            return 0; 
        p=next[p]; 
    } 
    next[r]=head[h]; 
    head[h]=r; 
    return 1; 

int main() 

#ifndef ONLINE_JUDGE 
    freopen("ex.in","r",stdin); 
#endif 
 
    int n,t,m,ncase=0; 
    scanf("%d",&t); 
    while(t--) 
    { 
        memset(head,-1,sizeof(head)); 
        scanf("%d%d%*c",&m,&n); 
        for(int i=0; i<m; i++) 
            gets(a[i]); 
        for(int i=0; i<n; i++) 
            gets(b[i]); 
        int r=0; www.2cto.com
        for(int i=0; i<m; i++) 
            for(int j=0; j<n; j++) 
            { 
                strcpy(str[r],a[i]); 
                strcat(str[r],b[j]); 
                 
                if(insert(str[r],r)) 
                    ++r; 
            } 
        printf("Case %d: %d\n",++ncase,r); 
    } 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved