ZCMU-1492-石头(dp,dfs)
来源:互联网 发布:人工智能机器人价格 编辑:程序博客网 时间:2024/06/04 17:53
1492: Problem D
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 175 Solved: 68
[Submit][Status][Web Board]
Description
Chieh最近在网上看到蓝翔非常火热。不知为什么他想到了一个问题,有一个n*m的矩阵
每一个小块里有k个石头。。现在挖掘机在左上角,挖掘机非常强大。。可以放无限的石头
但是它只能往右或者往下移动,现在Chieh想知道最多的石头从左上角到右下角。
Input
T 组数 T<=100
n m 1<=n. m<=1000
n行m个数 为石头数量 0<=s<=1000
Output
对于每组测试数据,输出对应的答案。
Sample Input
2
1 1
1
4 3
1 3 4
11 32 4
11 32 11
44 21 41
Sample Output
1
138
【解析】
这道题的话其实一开始觉得应该是dfs毕竟我们可以模拟出每一条路径然后就行比较,相当于建立一个解空间树一样的过程这个算法我还是不熟...这样可以是可以不过超时了...可能是递归对于大数据效率比较低的缘故,.后来看了一下他人的解释这个DP也是可以的,通过了...此处附上dfs代码和dp的代码。
DP
#include <iostream>#include <cstdio>#include <algorithm>#include<cstring>using namespace std;int value[1024][1024];int main(){ int m, n,t; scanf("%d",&t); while(t--) { memset(value,0,sizeof(value)); scanf("%d%d", &m, &n); for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { scanf("%d", &value[i][j]); } } for (int i = 1; i < m; ++i) { value[i][0] += value[i - 1][0];//往下面 } for (int j = 1; j < n; ++j) { value[0][j] += value[0][j - 1];//往右边 } for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { value[i][j] += max(value[i - 1][j], value[i][j - 1]);//刚开始是先将第一列和第一行的给初始化了,他们可以走到那个地方 } } printf("%d\n",value[m - 1][n - 1]);} return 0;}dfs
#include<iostream>#include<string>#include<string.h>#include<stdlib.h>#include<cstdio>#include<vector>using namespace std;int n,m;vector<vector<int> >c;vector<int>q;int max(int i, int j){ return i > j ? i : j;}int facs(int a,int b){ if(a==n||b==m) return 0; else if(a==n-1&&b==m-1) return c[a][b]; else return max(facs(a+1,b),facs(a,b+1))+c[a][b];}int main(){ int t,i,j,p; scanf("%d",&t); while(t--) { c.clear(); q.clear(); scanf("%d%d",&n,&m); for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&p); q.push_back(p); } c.push_back(q); q.clear(); } printf("%d\n",facs(0,0)); } return 0;}
0 0
- ZCMU-1492-石头(dp,dfs)
- YCJSOI1471 石头剪刀布(博弈dp)
- ZCMU 1803 2n皇后问题 (DFS)
- ZCMU-1165-dp
- ZCMU-1382-数位dp
- Zipper(DFS,DP)
- 滑雪 (DFS+DP)
- 动态规划dp(简单应用)hdu 2151 Worm(石头)
- 石头合并学习区间dp
- HDOJ2571 DP入门题(DP+DFS)
- POJ2192 Zipper(DP||DFS)
- hdu1501 Zipper(dfs && dp)
- 数位dp(dfs版)
- NYOJ10: skiing(DFS + DP)
- 河边的石头 ( 长沙理工大学第十一届程序设计竞赛)(DFS)
- DFS+DP
- ZCMU 1708 树状数组优化dp
- 区间dp nyoj737 合并石头(一)
- android4.0自定义锁屏apk形式总结
- 41. First Missing Positive
- Android中Html的显示与其中图片的异步加载
- ZBarSDK iphone5s 真机测试cpu占用不返还
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- ZCMU-1492-石头(dp,dfs)
- 2016
- Qt动画效果展示
- 数字、基数及表示
- gitbook编写文档
- iOS Uitableview的cell的选中样式
- 问一个 android eclipse 的logcat 打印的日志 一会就消失 很头疼
- [Android实例] Android Gradle 可以配置搭建多项目工程吗?急!
- MySql与Oracle的区别