社区讨论

求助,思路找不出错。

P1434[SHOI2002] 滑雪参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo2wmq2f
此快照首次捕获于
2023/10/23 20:59
2 年前
此快照最后确认于
2023/10/23 20:59
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int m[102][102];
int jm[102][102];
queue<int> a;
int r,c,num,maxnum,ans;
void search(int x,int y)
{
	if(jm[x][y])
	{
	   num+=1+jm[x][y];
	   return;
    }
    else
	{
	   if(m[x+1][y]<m[x][y]&&x+1>=1&&x+1<=r&&y>=1&&y<=c) 
       {
    	  search(x+1,y);
		  num++;
       }
       a.push(num);
       num=0;       
       if(m[x-1][y]<m[x][y]&&x-1>=1&&x-1<=r&&y>=1&&y<=c) 
       {
    	  search(x-1,y);
		  num++;    	
       }
       a.push(num);
       num=0;
       if(m[x][y+1]<m[x][y]&&x>=1&&x<=r&&y+1>=1&&y+1<=c) 
       {
    	  search(x,y+1);
		  num++;
       }
       a.push(num);
       num=0;       
       if(m[x][y-1]<m[x][y]&&x>=1&&x<=r&&y-1>=1&&y-1<=c) 
       {
    	  search(x,y-1);
		  num++;
       }
       a.push(num);
       num=0;       
    }
    maxnum=a.front();
    while(!a.empty())
    {
    	a.pop();
    	if(a.front()>maxnum) maxnum=a.front();
    }
    jm[x][y]=maxnum;
}
int main()
{
	cin>>r>>c;
	for(int i=1;i<=r;i++)
	    for(int j=1;j<=c;j++) cin>>m[i][j];
	for(int i=1;i<=r;i++)
	    for(int j=1;j<=c;j++) search(i,j);
	ans=jm[1][1];
	for(int i=1;i<=r;i++)
	    for(int j=1;j<=c;j++) if(jm[i][j]>ans) ans=jm[i][j];
	cout<<ans<<endl;		
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...