您的位置:首页 > 其它

[POJ_1002]487-3279

2011-08-23 13:51 302 查看
#include <iostream>
#include <set>
#include <map>
using namespace std;

class bnode
{
public:
bnode()
{
left = right = 0;
val = -1;
cnt = 2;
}

public:
int val;
int cnt;
};

class btree
{
public:
bnode* root;

btree()
{
root = 0;
}

void insert(int val)
{
if (root == NULL)
{
root = new bnode();
root->val = val;
}
else
{
insert_to(root, val);
}
}

void insert_to(bnode* node, int val)
{
if (val < node->val)
{
if (node->left == 0)
{
node->left = new bnode();
node->left->val = val;
}
else
{
insert_to(node->left, val);
}
}
else if (val > node->val)
{
if (node->right == 0)
{
node->right = new bnode();
node->right->val = val;
}
else
{
insert_to(node->right, val);
}
}
else
{
node->cnt++;
}
}

void output()
{
if (root == 0)
{
cout << "No duplicates." << endl;
}
else
{
cout.fill('0');
traverse(root);
}
}

void traverse(bnode* node)
{
if (node == 0)
return ;

traverse(node->left);
cout.width(3);
cout << node->val / 10000 << "-";
cout.width(4);
cout << node->val % 10000 << " " << node->cnt << endl;
traverse(node->right);
}
};

int ref_table[128];
btree elems;
set<int> track;

void init_table()
{
for (int i='0'; i<='9'; i++)
{
ref_table[i] = i - '0';
}

char trans[] = {'A', 'B', 'C',
'D', 'E', 'F',
'G', 'H', 'I',
'J', 'K', 'L',
'M', 'N', 'O',
'P', 'R', 'S',
'T', 'U', 'V',
'W', 'X', 'Y'};

for (int i=0; i<8; i++)
{
int val = i + 2;
ref_table[trans[i*3+0]] = val;
ref_table[trans[i*3+1]] = val;
ref_table[trans[i*3+2]] = val;
}
}

int s2i(char* str)
{
int len = strlen(str);
int sum = 0;
int base = 1;
int digit = 0;
for (int i=len-1; i>=0; i--)
{
if (str[i] == '-')
{
//skip
continue;
}
else
{
digit = ref_table[str[i]];
sum += digit * base;
base *= 10;
}
}

return sum;
}

int main()
{
int size;
cin >> size;
char buffer[256];

init_table();
for (int i=0; i<size; i++)
{
cin >> buffer;
int tel = s2i(&buffer[0]);
set<int>::iterator iter = track.find(tel);
if (iter == track.end())
{
track.insert(tel);
}
else
{
elems.insert(tel);
}
}

elems.output();

return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: