免费模板下载网站推荐,苏州seo,湖南长沙理工大学,wordpress主题主页面本题链接#xff1a;P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路#xff1a; 本题与之前的动态规划不一样#xff0c;比如背包问题和子序列问题等都是线性dp#xff0c;也就是dp数组其实主要用于存储计算的结果#xff0c;而这题…本题链接P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路 本题与之前的动态规划不一样比如背包问题和子序列问题等都是线性dp也就是dp数组其实主要用于存储计算的结果而这题中的dp数组除了存储结果外还有 图的作用。
f[ i ][ j ] 表示走到点ij的路的数卒只能走右和下因此 f [ i ] [ j ] f [ i - 1][ j] f [ i ][ j - 1] ;
代码 ac代码
#includeiostream
#includecmath
#includevector
using namespace std;int n,m,a,b;//m,n是目标点(a,b)是马
//马的路
int dx[8] {-1,-2,-2,-1,1,2,2,1};
int dy[8] {-2,-1,1,2,-2,-1,1,2};
const int N 30;
int limit[N][N];
long long f[N][N];int main(){cin n m a b;limit[a][b] true;for(int i 0;i 8;i){limit[a dx[i]][b dy[i]] true;}f[0][0] 1;for(int i 0;i n;i){for(int j 0;j m;j){if(!limit[i][j]){if(i) f[i][j] f[i-1][j];if(j) f[i][j] f[i][j-1];}}}cout f[n][m];return 0;
}
在贴一个dfs的代码过了40/100其他的超时了
#includeiostream
#includecmath
#includevector
using namespace std;int n,m,a,b;//m,n是目标点(a,b)是马
//马的路
int dx[8] {-1,-2,-2,-1,1,2,2,1};
int dy[8] {-2,-1,1,2,-2,-1,1,2};
const int N 22;
int mp[N][N];
int limit[N][N];
int res 0;
int dn[2] {1,0};
int dm[2] {0,1};int charge(int x,int y){if(x 0 || x n || y 0 || y m) return false;return true;
}void dfs(int x,int y){if(x n y m){res ;return;}for(int i 0;i 2;i){int nowx x dn[i],nowy y dm[i];if(charge(nowx,nowy) !limit[nowx][nowy]){dfs(nowx,nowy);}}
}int main(){cin n m a b;limit[a][b] true;for(int i 0;i 8;i){limit[a dx[i]][b dy[i]] true;}dfs(0,0);cout res;return 0;
}
以上是本文全部内容如果对你有帮助点个赞再走吧~ ₍˄·͈༝·͈˄*₎◞ ̑̑