UVA 1592(Database)

思路:参照紫书,先将字符串映射成数字便于处理,然后枚举每两列,再枚举每一行,利用STL里面的map做一个查找,若找到即输出当前行和map存放的之前的那一行即可。
注意:二元组用pair做批处理,代码做了相应注释,(代码参考了两位大佬的做法%%)

#include 
#include 
#include 
#include 
#include 

using namespace std;

typedef pairtwo_data;  //二元组,做批处理
//pair: pair可以理解为定义了一个pair结构体并且里面放置了first,secon两个数据,类型自定如现在的为两个int数据。
//make_pai(): 定义一个pair并放置两个数据进去
int cnt = 0;
mapid_table;        //将字符串映射成数字的map
mapcheck;         //根据二元组查找
int id_num[10010][20];          //存字符串映射后的数字

int ID(string s){               //将字符映射为数字函数
    if(id_table.count(s))
        return id_table[s];
    return id_table[s] = cnt++;
}

int main()
{
    //freopen("text.txt","r",stdin);
    int n,m;
    while(cin>>n>>m){
        cnt = 0;
        getchar();              //吸收前一行输入的换行符
        int ch;
        for(int i = 0;i

你可能感兴趣的:(UVA 1592(Database))