比赛 |
2024暑假C班集训A |
评测结果 |
AWWWAWWWWW |
题目名称 |
牧场的安排 |
最终得分 |
20 |
用户昵称 |
蜀山鸭梨大 |
运行时间 |
0.121 s |
代码语言 |
C++ |
内存使用 |
3.37 MiB |
提交时间 |
2024-07-10 11:23:49 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000000;
int n,m,ans=1,w[4][2]={1,0,0,1,-1,0,0,-1};
struct node{
int x,y;
};
vector <node> v;
//stack <node> s;
bool a[15][15],b[15][15];
void dfs(int z,int e){
if(z>=v.size()) return ;
bool flag=1;
for(int i=0;i<4;i++){
int xx=v[z].x+w[i][0],yy=v[z].y+w[i][1];
if(a[xx][yy]&&b[xx][yy]&&xx>=1&&xx<=n&&yy>=1&&yy<=m){
flag=0;
break;
}
}
if(flag&&e){
ans=(ans+1)%mod;
// cout<<"#"<<v[z].x<<" "<<v[z].y<<" "<<z<<endl;
b[v[z].x][v[z].y]=1;
dfs(z+1,e),dfs(z+1,0);
b[v[z].x][v[z].y]=0;
// cout<<"%"<<z<<endl;
}
if(flag&&!e) dfs(z+1,1);
if(!flag) dfs(z+1,e);
// else if(!b[v[z-1].x][v[z-1].y]){
// dfs(z+1),dfs(z+2);
// }
// if(!s.size()||(s.top().x+1!=v[z].x&&s.top().y+1!=v[z].y)||(s.top().x+1==v[z].x&&s.top().y+1==v[z].y)){
// ans=(ans+1)%mod;
// s.push(v[z]);
// dfs(z+1),dfs(z+2);
// s.pop();
// }
// else dfs(z+1),dfs(z+2);
return ;
}
int main(){
freopen("cowfood.in","r",stdin);
freopen("cowfood.out","w",stdout);
cin>>n>>m;
node aa;
aa.x=0,aa.y=0;
v.push_back(aa);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]){
node ij;
ij.x=i,ij.y=j;
v.push_back(ij);
}
}
}
for(int i=1;i<v.size();i++){
// cout<<"$"<<i<<endl;
dfs(i,1);
}
cout<<ans;
return 0;
}