[USACO]奶牛跳房子 题解
2023-08-27 11:07:22
发布于:广东
23阅读
0回复
0点赞
这题难就难在搜索那一步,我们其实可以用两个for循环来搜索,这样就可以找到下一个可跳的点了。
想想其实也不难
AC代码
#include <bits/stdc++.h> //头文件
using namespace std;
int n,m,ans=0;
char a[18][18]; //存地图
void dfs(int x,int y,char s) {
if(x>n||y>m||x<=0||y<=0) {
return ;
}
if(x==n&&y==m) { //到达终点
ans++;
return ; //剪枝,既然已经到了就不需要搜索了
}
for(int i=x+1; i<=n; i++) { //这两个循环是用来搜索下一个点跳在哪的
for(int j=y+1; j<=m; j++) {
if(a[i][j]!=s) { //找到了可跳的点
dfs(i,j,a[i][j]);
}
}
}
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin>>a[i][j];
}
}
dfs(1,1,a[1][1]);
cout<<ans<<endl;
return 0;
}
这里空空如也
有帮助,赞一个