滑雪

作者: 领悟悟悟 | 来源:发表于2017-08-11 18:18 被阅读14次

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
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
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
DP[i][j] = Max{ DP[i-1][j], DP[i+1][j], DP[i][j-1], DP[i][j+1] } + 1;

include <iostream>

using namespace std;

include <string>

define x_max 5

define y_max 5

/*
int map[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 };

            */

int map[5][5] = { 1, 2, 3, 4, 5,
1, 17, 5, 1, 6,
15, 1, 25, 20, 7,
14, 23, 22, 1, 8,
13, 1, 1, 1, 9 };

int path[25] = { -1 };
typedef struct _heigh
{
int x;
int y;
int h;
}heigh;
int mysort(const void* tmp1, const void* tmp2)
{
return ((heigh)tmp1)->h - ((heigh)tmp2)->h;
}
int mysort2(const void* tmp1, const void* tmp2)
{
return ((int)tmp1) - ((int)tmp2);
}
int DP(int x,int y,int num)
{
int tmp[4] = { 0 };
if (path[num] > 0)
return path[num];
//up
if (x - 1 >= 0 && map[x - 1][y] < map[x][y])
{
tmp[0] += (DP(x - 1, y, num) + 1);
}

//down
if (x + 1 < x_max&& map[x + 1][y] < map[x][y])
{
    tmp[1] += (DP(x + 1, y, num) + 1);
}
    
//left
if (y - 1 >= 0 && map[x][y - 1] < map[x][y])
{
    tmp[2] += (DP(x, y - 1, num) + 1);
}
    
//right
if (y + 1 < y_max&& map[x][y + 1] < map[x][y])
{
    tmp[3] += (DP(x, y + 1, num) + 1);
}
qsort(tmp, 4, sizeof(tmp[0]), mysort2);
if (tmp[3] == 0)
    return tmp[3] + 1;
return tmp[3];

}

int main()
{
heigh* heighArray = (heigh )malloc(sizeof(heigh)25);
memset(heighArray, 0, sizeof(heighArray));
int tmp = 0;
for (int i = 0; i < x_max; i++)
{
for (int j = 0; j < y_max; j++)
{
heighArray[tmp].x = i;
heighArray[tmp].y = j;
heighArray[tmp].h = map[i][j];
tmp++;
}
}
qsort(heighArray, x_maxy_max, sizeof(heigh), mysort);
for (int i = 0; i < 25; i++)
{
cout << "从高度" << heighArray[i].h << "开始 \t(" << heighArray[i].x <<"," << heighArray[i].y << ")....";
path[i] = DP(heighArray[i].x, heighArray[i].y,i);
cout << path[i] << endl;
}
/

for (int i = 0; i < 25; i++)
{
cout << heighArray[i].h << " ";
}
*/
if (heighArray != NULL)
{
free(heighArray);
heighArray = NULL;
}

system("pause");
return 0;

}

相关文章

  • 滑雪 !滑雪!滑雪

    滑雪滑雪滑雪 话不多说,留恋这个地方!现在已经划得出神入化了(第一次的自我感觉),我就是一运动健将,很NB!具体的...

  • 美国滑雪教练协会(PSIA) 对滑雪爱好者技术等级划分

    美国滑雪教练协会(PSIA) 对滑雪爱好者技术等级划分 标签:滑雪技术等级美国滑雪教练协会滑雪技术术语 美国滑雪教...

  • 杨小熙假期日志一:滑雪

    今天我约着我的好朋友一起来到恒星滑雪场滑雪。 我为滑雪做了很多准备,我准备了滑雪手套、滑雪服、滑雪...

  • 管家支招 | 滑雪前必做的几项准备运动

    冬天来临了,在这个滑雪的季节,如何安全滑雪呢,现在我们先来分享滑雪前必做的几项热身。 滑雪前必做的几项运动 1滑雪...

  • 滑雪

    今天,我们去滑雪场滑雪,买好了门票进了滑雪场。 还要租滑雪装备,我们排了好长的队,才租好滑雪装备,我走到这个大坡最...

  • 仙女山滑雪

    重庆人冬季最喜欢去的四个滑雪场分别是仙女山滑雪场、金佛山滑雪场、峨眉山滑雪场和西岭雪山滑雪场,峨眉山滑雪场和西岭雪...

  • 2020年北京冬令营|张家口冬奥单双板滑雪冬令营

    2020年北京滑雪冬令营,太舞滑雪小镇冬令营,张家口滑雪冬令营,北京双板滑雪冬令营,北京单板太舞滑雪冬令营,北京寒...

  • 谢谢你,陌生的美眉!

    今天平生第一次滑雪,听了滑雪场的工作人员简单介绍后,即如何穿脱滑雪靴,如何穿脱滑雪板,如何使用滑雪杖,如何减...

  • 我的乐园 - 草稿

    我的乐园就是滑雪场,不管是什么滑雪场?只要有滑雪板,有滑雪道,我就能滑。 滑雪有三景,雪是一景,人是一景。 另外一...

  • 岗什卡国际滑雪节

    岗什卡国际滑雪节国际滑雪节

网友评论

    本文标题:滑雪

    本文链接:https://www.haomeiwen.com/subject/wnerrxtx.html