豬和回文 51Nod 1503

2021-09-10 22:56:13 字數 690 閱讀 6445

dp[i][j][k][l]代表從(1,1)到(i,j)與從(n,m)到(k,l)對稱相等的路徑有多少

轉移方程為dp[i][j][k][l]=dp[i-1][j][k+1][l]+dp[i-1][j][k][l+1]+dp[i][j-1][k+1][l]+dp[i][j-1][k][l+1]

因i-1+j-1=n-k+m-l恆成立 所以由i j k可推l 可以優化掉一維 又因為dp[i]...只與dp[i-1] dp[i]有關 所以滾動陣列再優化掉一維

因為用了滾動陣列 細節有點多 **太挫

#include using namespace std;

typedef long long ll;

const ll mod=1e9+7;

const int maxn=5e2+10;

ll dp[2][maxn][maxn];

int n,m;

char ch[maxn][maxn];

bool judge(int x1,int y1,int x2,int y2)

int main()

dp[1][1][n]=1;

ans=0;

for(i=1;i<=n;i++)}}

}}

printf("%lld\n",ans);

return 0;

}

51nod 1503 豬和回文

乙隻豬走進了乙個森林。很湊巧的是,這個森林的形狀是長方形的,有n行,m列組成。我們把這個長方形的行從上到下標記為1到n,列從左到右標記為1到m。處於第r行第c列的格仔用 r,c 表示。剛開始的時候豬站在 1,1 他的目標是走到 n,m 由於豬回家心切,他在 r,c 的時候,只會往 r 1,c 或 r...

51Nod 1503 豬和回文

思路 沒想到要用dp去解決。題目是從起點出發走,我們可以從起點和終點各出發乙個點,每次兩個點各走一步,當然這兩步所對應的字元是要一樣的。於是,定義d step x1 y2 x2 y2 表示第step時第乙個點走到 x1,y1 第二個點走到 x2,y2 時 當然了,這兩個點的字元肯定是相同的 的方法數...

51nod 1503 豬和回文(dp滾存)

題面 大意 在乙個n m的矩形中從 1,1 走到 n,m 而且走過的路徑是一條回文串,統計方案數 sol 我們考慮從 1,1 和 n,m 兩端開始算,這樣就只要保證每次經過的字元一樣就可以滿足回文了,因為一定有乙個迴圈需要列舉步數,知道了步數自然只要知道了x座標就可以算出y座標了,於是只要列舉x1和...