下厨房
题目描述:
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。

#include<iostream>
#include<algorithm>
#include<cstring> 
using namespace std;
int cnt=0;
const int maxn =2e6+5;//如果是64MB可以开到2e6+5,尽量开大 
int tree[maxn][30];//tree[i][j]表示节点i的第j个儿子的节点编号 
bool flagg[maxn];//表示以该节点结尾是一个单词 
int tot;//总节点数 
void insert_(char *str) 
{
     int len=strlen(str); 
     int root=0; 
     for(int i=0;i<len;i++) 
     { 
         int id=str[i]-'0'; 
        if(!tree[root][id]) 
            tree[root][id]=++tot; 
            root=tree[root][id]; 
     } 
     if(flagg[root]) cnt++;
     flagg[root]=true;
}
int main()
{
    char str[100];
    int T=0;
    while(~scanf("%s",str))
    {
        insert_(str);
        T++;
    }    
    cout<<T-cnt<<endl;
    return 0;
} 
Last modification:September 20th, 2019 at 11:17 pm
如果觉得我的文章对你有用,请随意赞赏