HDU 1428 漫步校园(Spfa+记忆化搜索)
来源:互联网 发布:中国联合网络通信缴费 编辑:程序博客网 时间:2024/04/29 17:32
#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<sstream>#include<queue>using namespace std;typedef long long LL;const int M = 10000;const int INF = 0x3f3f3f3f;int n;int dir[][2] = { 1,0,-1,0,0,-1,0,1 };int mp[55][55];int s[55][55];bool vis[55][55];LL dp[55][55];struct node{int x, y;}st, nx;queue<node >q;void bfs() //记录每个点到终点的最短路{for (int i = 1; i <= n; ++i){for (int j = 1; j <= n; ++j){s[i][j] = INF;}}memset(vis, 0, sizeof(vis));vis[n][n] = 1;s[n][n] = mp[n][n]; //由于题目要求 需要逆向更新 node st;st.x = n;st.y = n;q.push(st);node tmp;while (!q.empty()) {node nx = q.front();q.pop();int x = nx.x;int y = nx.y;vis[x][y] = 0;for (int i = 0; i <4; ++i){int xx = x + dir[i][0];int yy = y + dir[i][1];if (xx<1 || xx>n || yy<1 || yy>n)continue;if (s[xx][yy]>s[x][y] + mp[xx][yy]){s[xx][yy] = s[x][y] + mp[xx][yy];if (!vis[xx][yy]){tmp.x = xx;tmp.y = yy;q.push(tmp);vis[xx][yy] = 1;}}}}return;}LL dfs(int x, int y){if (x == n && y == n)return 1;LL ans = 0;if (!dp[x][y]){for (int i = 0; i < 4; ++i){int xx = x + dir[i][0];int yy = y + dir[i][1];if (xx >= 1 && xx <= n && yy >= 1 && yy <= n && s[xx][yy] < s[x][y]){ans += dfs(xx, yy);}}dp[x][y] = ans;}return dp[x][y];}int main(){while (~scanf("%d", &n)){for (int i = 1; i <= n; ++i){for (int j = 1; j <= n; ++j){scanf("%d", &mp[i][j]);}}//memset(s, 0, sizeof(s));bfs();memset(dp, 0, sizeof(dp));cout << dfs(1, 1) << endl;}return 0;}
0 0
- HDU 1428 漫步校园(Spfa+记忆化搜索)
- HDU 1428 漫步校园(SPFA+记忆化搜索)
- hdu 1428 漫步校园(spfa求最短路+记忆化搜索)
- HDU 1428 漫步校园 SPFA + DFS记忆搜索
- hdu 1428 漫步校园(搜索+记忆化搜索)
- HDU 1428 漫步校园(记忆化搜索)
- 【记忆化搜索】HDU 1428 漫步校园
- HDU 1428-漫步校园(记忆化搜索)
- hdu 1428 漫步校园 记忆化搜索
- hdu 1428 漫步校园(记忆化搜索+宽搜最短路)
- hdu-1428 漫步校园(BFS+记忆化搜索)
- HDU 1428 漫步校园(最短路+记忆化搜索)
- HDOJ 1428 漫步校园 (spfa+记忆搜索)
- hdu 1428 漫步校园 优先队列BFS +记忆化搜索
- hdu 1428 漫步校园 (最短路+记忆化搜索)
- C语言记忆化搜索___漫步校园(Hdu 1428)
- HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)
- HDU 1428 漫步校园(bfs + 记忆化搜索)
- Fedora9.0安装VMwareTools遇到的问题
- awk使用shell中的变量
- 反射了解集合泛型的本质
- hibernate 一对多 多对一 关系的理解
- P1004 滑雪
- HDU 1428 漫步校园(Spfa+记忆化搜索)
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
- navicate进行数据传输失败
- 天声人語 20151020 知られざる蕪村句
- sprintf函数可能会造成由buf指向的缓冲区的溢出
- 对dijkstra算法的常数优化-by azui
- Android报表解决方案 使用开源组件iChartjs(一)
- torch问题及解决方案汇总(持续更新)
- 寻找轮廓