| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
就这样In Reply To:大神求解 Posted by:2801748509 at 2018-02-26 16:42:43 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#define N 101
using namespace std;
int map[N][N],len[N][N];
int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int r,c;
int dp(int i,int j)
{
if(len[i][j]!=0) return len[i][j];
int maxx=0,s;
for(int t=0;t<4;t++)
{
int x=i+dir[t][0],y=j+dir[t][1];
if(x>=0&&x<r&&y>=0&&y<c&&map[x][y]<map[i][j])
{
s=dp(x,y);
if(s>maxx) maxx=s;
}
}
len[i][j]=maxx+1;
return maxx+1;
}
int main()
{
while(~scanf("%d%d",&r,&c))
{
int mx=-1;
memset(len,0,sizeof(len));
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
scanf("%d",&map[i][j]);
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
{
len[i][j]=dp(i,j);
if(len[i][j]>mx) mx=len[i][j];
}
/*for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
printf("%d",len[i][j]);
printf("\n");}*/
printf("%d\n",mx);
}
return 0;
}
> tl++;res[cx][cy]=1;q[tl][0]=maxh;q[tl][1]=cy;q[tl][0]=cx;q[tl][2]=q[hd][2]+1;
> if(maxh==0)return;
> }
> }
> int main(){
> cin>>length>>wide;
> for(int i=1;i<=length;i++)
> for(int j=1;j<=wide;j++)
> cin>>map_high[i][j];
> maxx=map_high[1][1];bx=1;by=1;
> for(int i=1;i<=length;i++)
> for(int j=1;j<=wide;j++)
> if(map_high[i][j]>maxx){
> maxx=map_high[i][j];
> bx=i;by=j;
> }
> bfs(bx,by);
> cout<<q[tl][2];
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator