【POJ】3283 Card Hands
2024-10-15 02:06:47
字典树。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <stack>
using namespace std; #define TRIEN 56 typedef struct Trie {
Trie *next[TRIEN];
Trie() {
for (int i=; i<TRIEN; ++i)
next[i] = NULL;
}
} Trie; Trie *root;
int nn; Trie *create(const char str[], Trie *r) {
int i = , id;
Trie *p = r, *q; if (str[i] == 'A')
id = ;
else if (str[i] == 'J')
id = ;
else if (str[i] == 'Q')
id = ;
else if (str[i] == 'K')
id = ;
else if (str[i]=='' && ++i)
id = ;
else
id = str[i] - '';
if (str[i+]=='D')
id += ;
if (str[i+]=='H')
id += ;
if (str[i+]=='S')
id += ;
if (p->next[id] == NULL) {
q = new Trie();
p->next[id] = q;
++nn;
}
p = p->next[id]; return p;
} void del(Trie *t) {
if (t == NULL)
return ;
for (int i=; i<TRIEN; ++i)
del(t->next[i]);
delete t;
} int main() {
int n, m;
string tmp;
stack<string> st;
Trie *r; while (scanf("%d", &n)!=EOF && n) {
root = new Trie();
nn = ;
while (n--) {
scanf("%d", &m);
while (m--) {
cin >> tmp;
st.push(tmp);
}
r = NULL;
while (!st.empty()) {
tmp = st.top();
st.pop();
if (r == NULL)
r = create(tmp.data(), root);
else
r = create(tmp.data(), r);
}
}
printf("%d\n", nn);
del(root);
} return ;
}
最新文章
- 绘制相切弧arcTo
- PHP中常用的字符串格式化函数总结
- ios NSNotificationCenter 收到通知后的执行线程
- 程序员是怎么炼成的---OC题集--练习答案与题目(3)
- Linux同步机制 - 多线程开发总结
- [Everyday Mathematics]20150113
- 【转】创业C2C(Copy To China):停车位共享APP,用户、市政能够买账?
- Oracle 11gR2 RAC Votedisk and OCR Diskgroup Recovery
- android学习一些帖子
- .NET读写Excel工具Spire.Xls使用(1)入门介绍
- Mac下svn的使用
- DRF框架之认证组件用法(第四天)
- esxi网络中虚拟机的相关操作
- git小笔记
- Redis入门及主从配置
- xamarin android 需要获取apk签名工具
- 基于设备树的TQ2440 DMA学习(4)—— client驱动
- kafka集群监控工具之三--kafka Offset Monitor
- 【转】Stack Overflow研发副总裁:.NET技术并不差,合适自己就好
- ubuntu下访问其他盘出现挂在错误解决办法
热门文章
- [转] linux下查看文件编码及修改编码
- [转] Mac 下 PostgreSQL 的安装与使用
- java中关于public class
- C#调用百度云存储接口上传文件
- 1 加到 100 的 时间复杂度 C#.
- js正则实现用户输入银行卡号的控制及格式化
- linq学习笔记:将List<;T>; 转换为 Dictionary<;T Key,T Value>;
- C#获取类中所有方法
- 关于UIScrollView属性和方法的总结
- Oracle IN 传递字符串参数查询失效