CF1575J Jeopardy of Dropped Balls 题解
这道题其实真挺简单的,我才不会告诉你我调这道题的错要调傻了。
我是用搜索做的。
个人认为搜索算是一种优雅的暴力,较为简单的搜索只需按照题目的要求,去模拟一些题目要求的步骤,有时加一亿点剪枝,很容易就能 AC。
思路
按照题意,小球有三种移动方式,分别为向左,向右和向下。
而数组
下面代码中的 dfs 函数是搜索的核心,x 表示小球在 x 轴的坐标,y 表示小球在 y 轴的坐标。
code
#include<bits/stdc++.h>
#define XD 114514
#define yee 1919810
using namespace std;
int n,m,k,a[1010][1010],ans;
void dfs(int x,int y){//搜索
if(x>n or y>m){
ans=y;
return;
}
if(a[x][y]==1){//把小球向右移动
a[x][y]=2;
y++;
}else if(a[x][y]==2){//把小球向下移动
x++;
}else if(a[x][y]==3){//把小球向左移动
a[x][y]=2;
y--;
}
dfs(x,y);
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<=k;i++){
int nem;
scanf("%d",&nem);
ans=0;//初始化,其实没有也可以
dfs(1,nem);
cout<<ans<<" ";
}
return 0;
}
AC记录