2 条题解

  • 0
    @ 2025-3-22 20:12:25

    模拟即可

    #include<bits/stdc++.h>
    using namespace std;
    int m,n,a[1001][1001],b[1001][1001],l;
    int search(int x,int y){
    	if(b[x][y])return b[x][y];
    	b[x][y]=1;
    	if(a[x][y]>a[x][y+1]&&a[x][y+1])b[x][y]=max(b[x][y],1+search(x,y+1));
    	if(a[x][y]>a[x][y-1]&&a[x][y-1])b[x][y]=max(b[x][y],1+search(x,y-1));
    	if(a[x][y]>a[x+1][y]&&a[x+1][y])b[x][y]=max(b[x][y],1+search(x+1,y));
    	if(a[x][y]>a[x-1][y]&&a[x-1][y])b[x][y]=max(b[x][y],1+search(x-1,y));
    	return b[x][y];
    }
    int main(){
    	cin>>m>>n;
    	for(int i=1;i<=m;i++)
    	  for(int o=1;o<=n;o++)cin>>a[i][o];
    	for(int i=1;i<=m;i++)
    	  for(int o=1;o<=n;o++)search(i,o);
    	for(int i=1;i<=m;i++)
    	  for(int o=1;o<=n;o++)l=max(l,b[i][o]);
    	  cout<<l;
    	return 0;
    }
    
    
    • 0
      @ 2023-11-29 18:01:06
      #include<cstdio>
      #include<cstring>
      using namespace std;
      int f[105][105];
      int a[105][105];
      int r,c;
      int longest(int x,int y);
      int maxlong=-1000;
      int main()
      {
      	scanf("%d%d",&r,&c);
      	for (int i=1;i<=r;i++)
      	{
      		for (int j=1;j<=c;j++)
      		{
      			scanf("%d",&a[i][j]);
      		}
      	}
      	memset(f,-1,sizeof(f));
      	for (int i=1;i<=r;i++)
      	{
      		for (int j=1;j<=c;j++)
      		{
      			int tmp=longest(i,j);
      			maxlong=maxlong>tmp?maxlong:tmp;
      		}
      	}
      	printf("%d",maxlong);
      	return 0;
      }
      int longest(int x,int y)
      {
      	if (f[x][y]<0)
      	{
      		int maxlen=0;
      		if (x>1 && a[x][y]>a[x-1][y])
      		{
      			int clen=longest(x-1,y);
      			if (maxlen<clen)
      				maxlen=clen;
      		}
      		if (y>1 && a[x][y]>a[x][y-1])
      		{
      			int clen=longest(x,y-1);
      			if (maxlen<clen)
      				maxlen=clen;
      		}
      		if (x<c && a[x][y]>a[x+1][y])
      		{
      			int clen=longest(x+1,y);
      			if (maxlen<clen)
      				maxlen=clen;
      		}
      		if (y<r && a[x][y]>a[x][y+1])
      		{
      			int clen=longest(x,y+1);
      			if (maxlen<clen)
      				maxlen=clen;
      		}
      		f[x][y]=maxlen+1;
      	}
      	return f[x][y];
      }
      
      • 1

      信息

      ID
      1349
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      56
      已通过
      23
      上传者