UESTC OJ 1086 邱老师降临小行星 记忆化搜索
2015-10-23 11:58
435 查看
刚开始没有考虑全为空的情况 WA 了好几发
#include <bits/stdc++.h> using namespace std; const int N = 1e3 + 10; char Map ; int mov[4][2] = {1, 0, 0, -1, -1, 0, 0, 1}; int V [4][3]; int n, m; bool check(int x, int y) { if (x >= 1 && x <= n && y >= 1 && y <= m && Map[x][y] != '0') return true; return false; } int getLen(int x, int y, int dir, int turn) { if (V[x][y][dir][turn + 1] != -1) return V[x][y][dir][turn + 1]; int ans = 0; int tx = x + mov[dir][0], ty = y + mov[dir][1]; if (check(tx, ty)) { ans = V[x][y][dir][turn + 1] = getLen(tx, ty, (dir+turn+4)%4,turn* -1)+1; } return ans; } int main() { int t; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m); int ans = 0; int flag = 0; for (int i = 1; i <= n; i++) { scanf("%s", Map[i] + 1); } memset(V, -1, sizeof(V)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (Map[i][j] == '1') { flag = 1; int tmp = 0; for (int k = 0; k < 4; k++) { tmp += getLen(i, j, k, 1); } // cout << i << " " << j << " " << tmp << endl; ans = max(ans, tmp); } } } printf("%d\n", ans + flag); } return 0; }
相关文章推荐
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- C++深度优先搜索的实现方法
- 基于文本的搜索
- php实现搜索一维数组元素并删除二维数组对应元素的方法
- 使用Sphinx对索引进行搜索
- asp 多关键词搜索的简单实现方法
- C#使用foreach语句搜索数组元素的方法
- JavaScript中数组的排序、乱序和搜索实现代码
- C#编程实现Excel文档中搜索文本内容的方法及思路
- sqlserver中在指定数据库的所有表的所有列中搜索给定的值
- 可以用来搜索当前页面内容的js代码
- 全文搜索和替换
- javascript搜索自动提示功能的实现第1/3页
- mysql 模糊搜索的方法介绍
- C#搜索文字在文件及文件夹中出现位置的方法
- 基于ASP.NET的lucene.net全文搜索实现步骤
- 做个自己站内搜索引擎
- PHP查找与搜索数组元素方法总结