美文网首页
整理代码

整理代码

作者: qratosone | 来源:发表于2016-08-13 00:05 被阅读0次
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;

struct dot//创建一个结构体存储每个点的信息
{
    int x;
    int y;
    int h;
};
dot line[20000]; //将每个点存入该结构体数组
int height[120][120]; //用于存储input
int len[120][120];  //dp数组,存储每个点的最优解
int cmp( const void *a ,const void *b){ //快速排序的参考函数
    if((*(dot *)a).h>(*(dot *)b).h)
        return 1;
    else return -1;
}
int main (){
    int m,n;
    cin>>m>>n;
    int i,j;
    int flag=-1;
    int max=0;
    for(i=1;i<=m;i++){
        for(j=1;j<=n;j++)
        {
            flag++;
            scanf("%d",&height[i][j]);
            line[flag].x=i;
            line[flag].y=j;
            line[flag].h=height[i][j];
        }
    } //这个双层循环用来完成数据收集的工作
    qsort(line,m*n,sizeof(line[0]),cmp); //对结构体的h参数进行排序
    for(i=0;i<m*n;i++)
    {
    if(height[line[i].x][line[i].y]<height[line[i].x][line[i].y+1]&&len[line[i].x][line[i].y]>=len[line[i].x][line[i].y+1])

        {

            len[line[i].x][line[i].y+1]=len[line[i].x][line[i].y]+1;

        }

    if(height[line[i].x][line[i].y]<height[line[i].x+1][line[i].y]&&len[line[i].x][line[i].y]>=len[line[i].x+1][line[i].y])

        {

            len[line[i].x+1][line[i].y]=len[line[i].x][line[i].y]+1;

        }

    if(height[line[i].x][line[i].y]<height[line[i].x][line[i].y-1]&&len[line[i].x][line[i].y]>=len[line[i].x][line[i].y-1])

        {

            len[line[i].x][line[i].y-1]=len[line[i].x][line[i].y]+1;

        }

        if (height[line[i].x][line[i].y]<height[line[i].x-1][line[i].y]&&len[line[i].x][line[i].y]>=len[line[i].x-1][line[i].y])

        {

            len[line[i].x-1][line[i].y]=len[line[i].x][line[i].y]+1;

        }

    } //动态规划过程

    for(i=1;i<=m;i++) {
        for(j=1;j<=n;j++){
            if(len[i][j]>max)
                max=len[i][j];
        }
    } //遍历len数组,求出最大值
    cout<<max+1<<endl;// 因为初始值是0,所以最后要加一
    return 0;
}

相关文章

  • 代码整理

    短信验证码加倒计时:public function sendmess(){require('Public/Send...

  • 整理代码

  • 代码整理

    split_string C++string函数 赋值assign() 将字符串2赋值给字符串1: 字符串1 = ...

  • 整理代码

    支持 JSX的环境搭建好后,我们就可以深入学习基础的示例:生成 div 元素。以下代码展示了如何用React的 c...

  • 代码整理

    代码整理 这几天整理2019年来自己写的代码,学习的代码。 在idea上,创建了好idea2019,idea202...

  • IDEA代码整理

    一、代码整理 代码整理,快捷键: ( mac )option + command + L( win )ctrl +...

  • React代码整理

    1. 使用react-router-dom 注意4x之后已经不使用react-router了 2. 使用fragm...

  • 代码报错整理

    1、不用定义宽度,否则会出框 2、div img元素导致div高度会多出几个像素的解决问题 可以明显看到div实际...

  • kubelet代码整理

  • 自动整理代码

    1.vsCode(Visual Studio Code): 2.WebStorm:

网友评论

      本文标题:整理代码

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