UVA
来源:互联网 发布:开通淘宝直播什么要求 编辑:程序博客网 时间:2024/06/06 02:15
思路
直接枚举两列,然后枚举每一行用map依次记录每对字符串出现的是否出现过(字符串最好先处理成数字,这样会更快),如果出现就是”NO”,否则就是”YES”。
AC代码
#include <stdio.h>#include <algorithm>#include <map>#include <string>using namespace std;typedef pair<int, int> pii;const int maxr = 10000+5;const int maxc = 15;int tab[maxr][maxc];map<string, int> idMap;int id;map<pii, int> visMap;void init() { id = 0; idMap.clear(); visMap.clear();}int getId(string s) { if(!idMap.count(s)) { idMap[s] = id++; } return idMap[s];}void solve(int r, int c) { for(int i = 0; i < c; i++) { for(int j = i+1; j < c; j++) { visMap.clear(); for(int k = 0; k < r; k++) { pii p = make_pair(tab[k][i], tab[k][j]); if(visMap.count(p)) { printf("NO\n"); printf("%d %d\n", visMap[p], k+1); printf("%d %d\n", i+1, j+1); return; } else { visMap[p] = k+1; } } } } printf("YES\n");}int main() { int r, c; string x; while(scanf("%d%d", &r, &c) == 2) { init(); getchar(); for(int i = 0; i < r; i++) { for(int j = 0; j < c; j++) { char ch; x = ""; while(scanf("%c", &ch)==1 && ch != '\n' && ch != ',') { x += ch; } tab[i][j] = getId(x); //printf("%d ", tab[i][j]); } //printf("\n"); } solve(r, c); } return 0;}
如有不当之处欢迎指出!
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- git常用命令
- Golang和Erlang的协程调度
- linux卸载mysql,apache,php
- Android——面试题(1)Activity篇
- Fragment事物实现导航页面
- UVA
- php中的数值型字符串相加 相比较(> < ==)
- 你厌恶现在的圈子,那就努力跳出去
- 十个方法提高网站的访问
- HDU 2594 Simpsons’ Hidden Talents
- shell脚本压缩js和css
- MPP和HAdoop的关系
- [luogu3397]地毯(二维线段树组)
- 欢迎使用CSDN-markdown编辑器