POJ 1088 滑雪(输出对比)
http://poj.org/problem?id=1088
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 68159 | Accepted: 25100 |
Description
1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
Output
Sample Input
5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Sample Output
25
#include<iostream>
#include<cstdio>
#include<cstring>using namespace std;int map[110][110];
int dp[110][110]; //这个位置能走的最远距离
int maxx,p;int mark[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};void Dfs(int x, int y, int t)
{int i,j,q,now;if(map[x][y] == -1) //到边缘退出{return ;}if(dp[x][y]!=0) //这条路经已经求出最长,则接下来的不用再搜了,剪枝{t = t+dp[x][y];if(t > p){p = t;}return ;}t = t+1; //当前这个位置没有求过最优解并且没有离开边界if(t > p){p = t;}for(q = 0; q < 4; q++){i = x+mark[q][0];j = y+mark[q][1];if(map[i][j] < map[x][y]){now = t;Dfs(i,j,now);}}return ;
}int main()
{int r,c,t,i,j;while(scanf("%d%d",&r,&c)!=EOF){maxx = 0;memset(map,-1,sizeof(map));memset(dp,0,sizeof(dp));for(i = 1; i <= r; i++){for(j = 1; j <= c; j++){scanf("%d",&map[i][j]);}}for(i = 1; i <= r; i++){for(j = 1; j <= c; j++){t = 0; //清空p = 0;Dfs(i,j,t);dp[i][j] = p; //记录这个位置的最远距离if(p > maxx){maxx = p;}printf("%d ",dp[i][j]);}printf("\n");}printf("%d\n",maxx);}return 0;
}
花姐AC代码:
#include<stdio.h>
int n,m;
int map[100][100];
int lon[100][100];
int dir[4][2]= {1,0,0,1,-1,0,0,-1};
bool inmap(int x,int y)
{if(x>=0&&x<n&&y>=0&&y<m)return true;elsereturn false;
}
int dfs(int x,int y)
{int nx,ny,i;int max1=1;if(lon[x][y]>1)return lon[x][y];for(i=0; i<4; i++){nx=x+dir[i][0];ny=y+dir[i][1];if(inmap(nx,ny)&&map[x][y]>map[nx][ny]){lon[x][y]=dfs(nx,ny)+1;if(lon[x][y]>max1)max1=lon[x][y];}}lon[x][y]=max1;return max1;
}
int main()
{int i,j;int longest;scanf("%d%d",&n,&m);longest=1;for(i=0; i<n; i++)for(j=0; j<m; j++){scanf("%d",&map[i][j]);lon[i][j]=1;}for(i=0; i<n; i++){for(j=0; j<m; j++){int t=dfs(i,j);longest=longest>t?longest:t;}}for(i=0; i<n; i++){for(j=0; j<m; j++){printf("%d ",lon[i][j]);}printf("\n");}printf("%d\n",longest);return 0;
}
随机产生输入数据程序(in)代码:
#include <cstdio>
#include <ctime>
#include <time.h>
#include <cstdlib>
using namespace std;
double radom() //生成[0,1]之间的均匀随机数
{return (double)rand()/RAND_MAX;
}
//int random(int m)
//{
// return (int)(random()*(m-1)+0.5);
//}
int main()
{int n,m, i, j, x;srand(time(NULL)); //散播随机种子(头文件需要time.h和stdlib.h)n = rand()%100 +1; //产生1到100的随机数并赋值给nm = rand()%100 +1;
// freopen("in.txt","r",stdout);printf("%d %d\n",n,m);
// scanf("%d",&n);for(i=0; i<n; i++){for(j=0; j<m; j++){x = rand()%100000;printf("%d ",x);}printf("\n");}return 0;
}
windows下批处理对比文件指令(用txt写完后改为bat批处理格式):
:again
in > input ;in.exe里面的随机数输入到input文件中
lei < input > output.l ;input文件里面的随机数数据输入到lei.exe中并把其得到的结果存放到outputl文件里面
wang <input > output.w ;同上一行
fc output.l output.w ;对比文件outputl和outputw文件
if not errorlevel 1 goto again ;如果两个文件里面的数据相同则继续循环
pause ;否则就暂停
POJ 1088 滑雪(输出对比)相关推荐
- poj 1088 滑雪(线性DP)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 81553 Accepted: 30437 Description ...
- poj 1088 滑雪 详解
http://poj.org/problem?id=1088 这是一道dp入门题,不过我一直没想明白应该怎么dp.今天,在做自己学校oj的算法基础题时看到这题,标注着dp的分类,加上我一直都比较喜欢做 ...
- 动态规划 POJ 1088 滑雪
Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知 ...
- POJ 1088 滑雪 (动规)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 75664 Accepted: 28044 Description Mich ...
- POJ - 1088 滑雪 【DP】【DFS】
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- poj 1088 滑雪 (dp)
题目链接 题意就不多解释了,题目思路很简单,搜索就行了,但是暴搜会TLE,但是对于每一个dfs(X, Y),如果参数一样的话结果也是一样的,我们用一个二维数组去保存每次计算的位置的结果,最后从所有的解 ...
- poj 1088滑雪
经典的动态规划问题: 1 #include<iostream> 2 3 using namespace std; 4 5 int b[101][101]; 6 int d[101][101 ...
- I - 滑雪 POJ - 1088(深搜,记忆化搜索)
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...
- POJ 1088(滑雪)
题目链接 题意 给一个R.C数字矩阵,每个点可以向上下左右且比自己小的方向移动,问最长移动距离 AC dfs + 记忆 #include <iostream> #include <a ...
最新文章
- ASP.NET MVC+Bootstrap个人博客之打造清新分页Helper(三)
- 大TTT需要复习的课件PPT以及大作业完成链接
- go 指针变量和普通变量的转化_C语言 | 指向结构体变量的指针变量
- 企业级应用能帮助闪存走出产能过剩时代吗?
- 味道不错的NBearLite查询语法
- 网络IO超时的几种实现
- 计算机网络技术班会,【主题班会】17计算机网络技术三班“走出手机幻境,拥抱真实生活”主题班会...
- 外设驱动库开发笔记1:AD56xx系列DAC驱动
- 数据库服务的安装,启动,关闭
- [导入]用ASP.Net(C#)连接Oracle数据库的方法
- 3dmax uv展开
- 关于空间计量模型中自回归系数大于1的解释
- C#数据库编程实战经典
- R语言基于mgcv包进行广义可加模型及交互作用演示(2)
- 车间图纸管理软件-车间无纸化管理解决方案
- 单片机---HLK-W801移植Nes模拟器(一)
- 任正非 《一江春水向东流》
- LLVM学习笔记----clang、llvm-as、llvm-dis、llc、 llvm-link、lli
- 服务器kvm切换器维修,服务器数字KVM切换器
- Android入门篇