UVA1592-Database
2015-05-14 17:18
316 查看
这个题开得有点晚,只是因为读不懂题,这个题也提供了一个好思路来优化代码。
首先,把字符串映射到整形,然后相比整形而不是字符串,大大缩短时间。
题意:输出表格中存在的 r1,r2 ,c1,c2使得表格的r1行c1列与r2行c1列相同,r1行c1列与r2行c1列相同。
AC源码:
首先,把字符串映射到整形,然后相比整形而不是字符串,大大缩短时间。
题意:输出表格中存在的 r1,r2 ,c1,c2使得表格的r1行c1列与r2行c1列相同,r1行c1列与r2行c1列相同。
AC源码:
#include<iostream> #include<string> #include<map> #include<cstdio> using namespace std; int num[10010][15]; int m,n; void input(){ map<string, int> mp; int cnt(0); for(int mi=0; mi<m ; mi++){ string s_; getline(cin,s_); int st(0); int en=s_.find(',',0); for(int i =0;i<n;i++){ if(i==n-1){ string s1( s_.begin()+ st , s_.end()); if(mp.count(s1)) num[mi][i]=mp[s1]; else num[mi][i]=(mp[s1]=cnt++); } else{ string s1( s_.begin()+ st , s_.begin()+en); st=en+1; en=s_.find(',',st); if(mp.count(s1)) num[mi][i]=mp[s1]; else num[mi][i]=(mp[s1]=cnt++); } } } } void solve(){ for(int i =0;i<m-1;i++) for(int j=i+1;j<m;j++){ int have=0; int c[2]; for(int k=0;k<n;k++){ if(num[i][k]==num[j][k]){ c[have++]=k; if(have==2){ cout<<"NO"<<endl; cout<<i+1<<" "<<j+1<<endl; cout<<c[0]+1<<" "<<c[1]+1<<endl; return; } } } } cout<<"YES"<<endl; } int main(){ while(cin>>m>>n){cin.get(); input(); solve(); } return 0; }
相关文章推荐
- UVA 1592(p128)----Database
- Database UVA - 1592
- UVA-1592 Database
- UVA1592 Database
- UVa_1592 - Database
- UVa - 1592 Database(STL综合,强推!)
- 《算法竞赛入门经典2ndEdition 》例题5-9 数据库(Database, Uva1592)
- 【例题5-9 UVA - 1592】Database
- UVa 1592Database(map的妙用)
- UVA 1592 Database
- UVA_1592: Database
- uva-1592 Database[STL应用]
- UVa 1592 Database(枚举+字符串查重)
- 【UVa 1592】Database
- UVA ~ 1592 ~ Database (枚举 + map + pair)
- UVA - 1592 Database 枚举+map
- Database——Uva 1592
- UVa 1592 Database
- Database, UVa 1592
- uva 1592 Database