《算法竞赛入门经典》---S5----STL

*UVA  1592---map

大概就是要找出两组位置有相同的string

string查找对比时太慢 所以 map一下  就是不同的二行  对应二列字符串相同

【解】

数据:

How to compete in ACM ICPC,Peter,[email protected]
How to win ACM ICPC,Michael,[email protected]
Notes from ACM ICPC champion,Michael,[email protected]
编号为  
       0 1 2 
       3 4 5
       6 4 5
 因为要找到两对相同的列,四重遍历可以找到 太慢了!!!(r1,c1)=(r2,c1),(r1,c2)=(r2,c2)

考虑将c1,c2两列的内容一起存到map中,所以map的key为(x,y)

【x,y分别代表对应字符串的编号】,map的值为对应的行r1,遍历行就是r2;所以三重遍历即可完成。
原文:https://blog.csdn.net/wowowoc/article/details/40554525?utm_source=copy

//救救孩子 并不太懂val和q那个
#include 
#include 
#include 
#include 
#include 
#define BIG 100100
using namespace std;

map IDcache;
map ans;
vector >  tab;

int main(){
    int n,m,c1,c2,r,val,tmp,f=0,q;
    string cmd;//存储每条未处理字符串 
    while(cin>>n>>m){
        tab.clear();//编号表 
        IDcache.clear();
        ans.clear();
        f=0;// 
        int t=0,row = n,col = m;
        getchar();
        while(n--)
		{
            getline(cin,cmd);
            string str = "";
            vector line;//中间的工具 
            //cout<
//经过队友讲解豁然开朗 bing!
//后边附上自己实操代码吧 还是  orzzzzz

#include 
#include 
#include 
#include 
#include 
#define BIG 100100
using namespace std;

map IDcache;
map ans;
vector >  tab;

int main(){
    int n,m,c1,c2,r,val,tmp,f=0,q;
    string cmd;//存储每条未处理字符串 
    while(cin>>n>>m){
        tab.clear();//编号表 
        IDcache.clear();
        ans.clear();
        f=0;// 
        int t=0,row = n,col = m;
        getchar();
        while(n--)
		{
            getline(cin,cmd);
            string str = "";
            vector line;//中间的工具 
            //cout<

 

 


 

你可能感兴趣的:(《算法竞赛入门经典》---S5----STL)