487-3279 - PKU 1002

原创 2007年09月25日 08:59:00
/**//*
  Name: 487-3279 - PKU 1002
  Author: Mars
  Description: 本来用STL的MAP写的,超了N次时。。只得自己写了个二分查找树
  Result: 2265308 bestzsx 1002 Accepted 2512K 998MS C++ 1753B 2007-06-12 23:50:54 
*/


#include 
<iostream>

using namespace std;

int flag;

class tNode ...{
    
public:
        tNode();
        tNode(
int value);
        
int val;
        
int counts;
        tNode 
* lch, * rch;
}
;
tNode::tNode() 
...{
    val 
= 0;
    counts 
= 0;
    lch 
= rch = NULL;
}

tNode::tNode(
int value) ...{
    val 
= value;
    counts 
= 1;
    lch 
= rch = NULL;
}


class BSTree ...{
    
public:
        BSTree();
        tNode 
* insert(tNode *);
        
void mfs(tNode *);
        tNode 
* root;
}
;
BSTree::BSTree() 
...{
    root 
= NULL;
}

tNode 
* BSTree::insert(tNode * z) ...{
    tNode 
* y = NULL;
    tNode 
* x = root;
    
while (x!=NULL) ...{
        y 
= x;
        
if (z->val == x->val) ...{
            
++x->counts; 
            
break;
        }
 else if (z->val < x->val) ...{
            x 
= x->lch;
        }
 else ...{
            x 
= x->rch;
        }

    }

    
if (NULL==x) ...{
        
if (NULL==y) root = z;
        
else ...{
            
if (z->val < y->val) 
                y
->lch = z;
            
else 
                y
->rch = z;
        }

    }

    
return z;
}


void BSTree::mfs(tNode * tn) ...{
    
if (NULL==tn) return;
    mfs(tn
->lch);
    
if (tn->counts>1...{
        
if (!flag) flag = 1;
        cout.width(
3);
        cout
<<tn->val/10000;
        cout
<<"-";
        cout.width(
4);
        cout
<<tn->val%10000;
        cout
<<" "<<tn->counts<<endl;
    }

    mfs(tn
->rch);
}



int m1002() ...{
    
int i,N,val;
    
char c;
    BSTree 
* bst = new BSTree();
    flag 
= 0;
    cin
>>N;
    c 
= cin.get(); // remove ' '
    for (i=0;i<N;++i) ...{
        
// input
        val = 0;
        
while ((c=cin.get())!=' '...{
            
if (c>='0' && c<='9')
                val
=val*10+c-'0';
            
else if (c>='A' && c<'Q')
                val
=val*10+(c-'A')/3+2;
            
else if (c>'Q' && c<'Z')
                val
=val*10+(c-'Q')/3+7;
        }

        bst
->insert(new tNode(val));
        
// solve
    }

    cout.fill(
'0');
    bst
->mfs(bst->root);
    
if (!flag) cout<<"No duplicates. ";
    delete bst;
    
return 0;
}
 
 

pku acm 1002 487-3279代码

  • 2008年03月26日 12:15
  • 4KB
  • 下载

PKU_1002_487-3279

487-3279 Description Businesses like to have memorable telephone numbers. One way to make a ...

PKU OJ 1002(487-3279)电话号码解题方法与个人最简短代码

以前一次偶然的机会听说了最短代码竞赛,这两天不想干啥事,便开始做一做OJ吧, 题目见这里:http://poj.org/problem?id=1002 主要是一个字符串读取与转换,我的代码长度为651...

PKU ACM 1002 487-3279

题目链接:487-3279 问题描述: 企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-G...

POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题

题意:给你许多串字符串,从中提取电话号码,输出出现复数次的电话号码及次数。 以下是我艰难的AC历程:(这题估计是我刷的题目题解次数排前的了。。。) 题目不是很难理解,刚开始想到用map,但stl的ma...
  • hcbbt
  • hcbbt
  • 2013年07月31日 10:30
  • 1879

POJ-1002-487-3279

一道很坑的水题,测试数据非常诡异,如果不用stl基本一直就是TLE的状态。 然后输出要注意前导零的控制,但是我在题目里并没有发现这一点(?),一直WA查了别人的题解才发现的。 有热心的朋友请帮我指...

poj_1002 487-3279 快速排序

本题的基本思路就是将字符串转化为整数,经过快速排序后,再从头找重复的电话号码。 下面的代码中,快速排序直接使用库函数(需要stdlib.h),可以毫无压力地通过,时间大致为550ms左右。 #incl...

uva 755 poj 1002 487-3279

题意: 给一堆只有数字  大写字母除(Q,Z)外和字符‘-’    组成的字符串    他们的标准形式是如   123-1234   最后要求判断标准形式是否与重复的电话号码   有重复的输出标准形式...

北大ACM poj1002 487-3279

487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 191845   Acc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 487-3279 - PKU 1002
举报原因:
原因补充:

(最多只允许输入30个字)