只收录价值题哈哈哈
T1:走方格
DP写法:
#include<bits/stdc++.h>
#include<cstring>
#define N 35
using namespace std;
int n,m,k;
int dp[N][N];
int main()
{
cin>>n>>m;
if(n%2==0 && m%2==0)
{
cout<<"0"<<endl;
return 0;
}
dp[1][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==1 && j==1)
continue;
if(i%2!=0 || j%2!=0)
{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
else
continue;//多余的hh
}
}
cout<<dp[n][m]<<endl;
return 0;
}
爆搜DFS写法:
#include<bits/stdc++.h>
#include<cstring>
#define N 35
using namespace std;
int n,m,k;
int dp[N][N];
int ans=0;
void dfs(int x,int y)
{
if(x&1 || y&1)
{
if(x==n && y==m)//搜到了
{
ans++;
return;
}
if(x<n)
dfs(x+1,y);
if(y<m)
dfs(x,y+1);
}
}
int main()
{
cin>>n>>m;
dfs(1,1);
cout<<ans<<endl;
return 0;
}