请问(各位神犇)这个算动态规划吗?
代码:
#include <bits/stdc++.h>
using namespace std;
int a[30][30] = {1};
bool b[30][30] = {true};
int main()
{
int nx, ny, hx, hy;
cin >> nx >> ny >> hx >> hy;
a[hx][hy] =
a[hx + 2][hy + 1] =
a[hx + 1][hy + 2] =
a[hx - 1][hy + 2] =
a[hx - 2][hy + 1] =
a[hx - 2][hy - 1] =
a[hx - 1][hy - 2] =
a[hx + 1][hy - 2] =
a[hx + 2][hy - 1] =
0;
b[hx][hy] =
b[hx + 2][hy + 1] =
b[hx + 1][hy + 2] =
b[hx - 1][hy + 2] =
b[hx - 2][hy + 1] =
b[hx - 2][hy - 1] =
b[hx - 1][hy - 2] =
b[hx + 1][hy - 2] =
b[hx + 2][hy - 1] =
false;
for (int i = 2; i <= nx; i++)
{
for (int j = 2; j <= ny; j++)
{
if (b[i][j])
{
a[i][j] = a[i - 1][j] + a[i][j - 1];
}
}
}
cout << a[nx][ny] << endl;
return 0;
}
怀疑问题所在的修改后代码(全部移动):
#include <bits/stdc++.h>
using namespace std;
int a[50][50] = {1};
bool b[50][50] = {true};
int main()
{
int nx, ny, hx, hy;
cin >> nx >> ny >> hx >> hy;
a[hx + 1][hy + 1] =
a[hx + 2 + 1][hy + 1 + 1] =
a[hx + 1 + 1][hy + 2 + 1] =
a[hx - 1 + 1][hy + 2 + 1] =
a[hx - 2 + 1][hy + 1 + 1] =
a[hx - 2 + 1][hy - 1 + 1] =
a[hx - 1 + 1][hy - 2 + 1] =
a[hx + 1 + 1][hy - 2 + 1] =
a[hx + 2 + 1][hy - 1 + 1] =
0;
b[hx + 1][hy + 1] =
b[hx + 2 + 1][hy + 1 + 1] =
b[hx + 1 + 1][hy + 2 + 1] =
b[hx - 1 + 1][hy + 2 + 1] =
b[hx - 2 + 1][hy + 1 + 1] =
b[hx - 2 + 1][hy - 1 + 1] =
b[hx - 1 + 1][hy - 2 + 1] =
b[hx + 1 + 1][hy - 2 + 1] =
b[hx + 2 + 1][hy - 1 + 1] =
false;
for (int i = 2; i <= nx; i++)
{
for (int j = 2; j <= ny; j++)
{
if (b[i + 1][j + 1])
{
a[i + 1][j + 1] = a[i - 1 + 1][j + 1] + a[i + 1][j - 1 + 1];
}
}
}
cout << a[nx + 1][ny + 1] << endl;
return 0;
}
凉凉的我。