poj1088 dfs

好吧发现大部分题解都是动态规划。。

也对,最长递减子序列嘛,其实我觉得我现在简直相当于不会动态规划的样子。。

搜索也很裸,,

#include
#include
#define max 110

using namespace std;

int map[max][max],sum,r,c;
int po[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

struct node{
    int value,step;
}node[110][110];

int ok(int x,int y)
{
    if(x<0||x>=r||y<0||y>=c)return 0;
	else return 1;
}

void dfs(int x,int y)
{
    int a,b;
    int step=node[x][y].step;
    int value=node[x][y].value;
    for(int i=0;i<4;i++)
    {
        a=x+po[i][0];
        b=y+po[i][1];
        if(ok(a,b)&&node[a][b].value>value&&node[a][b].step>node[i][j].value;
                node[i][j].step=1;
            }

        for(int i=0;imaxx)maxx=node[i][j].step;
			}
		}
        printf("%d\n",maxx);
    }
    return 0;
}


你可能感兴趣的:(ACM)