动态规划专项intermediate:UVa 10599

不难发现路径是以garbage为结点的,所以可以根据garbage的相对顺序建图进行dp,与此同时也可以递推出最长路径的数量。至于打印路径,根据dp得出的结果再dfs一遍即可。

#include 
#include 
#include 
#include 
using namespace std;
typedef long long LL;
const int maxn=110;
int r,c,n,flag;
int gar[maxn*maxn];
int vis[maxn*maxn];
int dp[maxn*maxn];
LL dp2[maxn*maxn];
int dfs(int u)
{
    if(u==n)
    {
        dp2[u]=1;
        return dp[u]=0;
    }
    if(vis[u]) return dp[u];
    vis[u]=1;
    int &ans=dp[u];
    LL &res=dp2[u];
    ans=0;res=0;
    for(int i=u+1;i


你可能感兴趣的:(动态规划)