首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

POJ3297+地图字符串处理

2013-09-09 
POJ3297+map字符串处理附数据两组:ABCCabcaeAAAabcAAAAabcAaBaCa#includestdio.h#includestring.h#inc

POJ3297+map字符串处理

附数据两组:

ABCCabcaeAAAabcAAAAabcAaBaCa
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>#include<map>#include<stack>#include<set>#include<math.h>using namespace std;typedef long long int64;//typedef __int64 int64;typedef pair<int64,int64> PII;#define MP(a,b) make_pair((a),(b)) const int maxn = 105;const int maxm = 1005;const int inf = 0x7fffffff;const double pi=acos(-1.0);const double eps = 1e-8;struct Node{    string name;    int cnt;}project[ maxn ];map<string,int>mp;map<string,int>special;void init(){    mp.clear();    special.clear();}int cmp( Node a,Node b ){    if( a.cnt!=b.cnt )        return a.cnt>b.cnt;    else        return a.name<b.name;}int main(){     string temp;    while( getline( cin,temp ) ){        //cout<<"temp = "<<temp<<endl;        if( '0'==temp[0] )             break;        if( '1'==temp[0] )             continue;        init();        int Num = 1;        while( 1 ){            project[ Num ].name = temp;            project[ Num ].cnt = 0;            while( 1 ){                getline( cin,temp );                //cout<<"temp = "<<temp<<endl;                if( temp.size()==1&&temp[0]=='1' ) break;                if( (  temp[0]>='a'&&temp[0]<='z' )||( temp[0]>='0'&&temp[0]<='9' ) ){                    if( mp[ temp ]==0 ){                        mp[ temp ] = Num;                        project[ Num ].cnt ++ ;                    }                    else {                        if( mp[ temp ]==Num ){}                        else if( special[ temp ]==0 ){                            special[ temp ] = 1;                            if( project[ mp[temp] ].cnt>0 )                                 project[ mp[ temp ] ].cnt --;                        }                    }                }                else                    break;            }            Num ++ ;            if( '1'==temp[0] ) break;        }        //cout<<"ok"<<endl;        sort( project+1,project+Num,cmp );        for( int i=1;i<Num;i++ ){            cout<<project[i].name<<" "<<project[i].cnt<<endl;        }    }    return 0;}


热点排行