UVA 10285(p304)----Longest Run on a Snowboard

来源:互联网 发布:网络环路检测工具 编辑:程序博客网 时间:2024/09/21 08:59
#include<iostream>#include<cstdio>#include<algorithm>#include<string>const int dx[4]={1,-1,0,0};const int dy[4]={0,0,1,-1};using namespace std;int t,r,c,temp,a[105][105],f[110][110];string st;int dfs(int x,int y){    if(f[x][y]!=-1) return f[x][y];    int m=0,temp=0;    for(int i=0;i<4;i++)    {       int xx=x+dx[i],yy=y+dy[i];       if(xx>=0&&xx<=r&&yy>=0&&yy<=c)          if((a[xx][yy]<a[x][y]))            temp=max(temp,dfs(xx,yy)+1);    }    f[x][y]=temp;   // cout<<x<<" "<<y<<" "<<f[x][y]<<endl;    return f[x][y];}void init(){    for(int i=0;i<110;i++)        for(int j=0;j<110;j++)           f[i][j]=-1;}int main(){   // freopen("in.in","r",stdin);   // freopen("out.out","w",stdout);    scanf("%d",&t);    while(t--)    {        init();        int ans=0;        cin>>st>>r>>c;        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)              scanf("%d",&a[i][j]);        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)            {               f[i][j]=dfs(i,j);               ans=max(f[i][j],ans);            }        cout<<st<<": "<<ans+1<<endl;    }    return 0;}

0 0
原创粉丝点击