力大砖飞,纯暴力搜索——蓝桥p2110(写着玩的)
https://i-blog.csdnimg.cn/direct/22576672f0a34b709f1522000221eea6.png#include<bits/stdc++.h>
const int N=1000000;
using namespace std;
bool mp;
int cnt=0;
int n;
void dfs(int row,int col){
cnt=cnt%1000000007;
if(col==n && row==2){
cnt++;
return ;
}
if(row>=2){ //下一列
dfs(0,col+1);
return;
}
if(mp==1){ //下一行
dfs(row+1,col);
return ;
}
//I型木块两种情况,平放和竖放
//1.竖放
if(row==0 && mp==0 && mp==0){
mp=1,mp=1;
dfs(row+2,col); //直接下一列
mp=0,mp=0;
}
//2.横放
if(col+1<=n &&mp==0 && mp==0){
mp=1 , mp=1;
dfs(row+1,col);
mp=0 , mp=0;
}
//L型木块有四种可能
//第一种
if(row==0 && col+1<=n && mp==0 && mp==0 && mp==0){
mp=1 , mp=1 , mp=1;
dfs(row,col+1);
mp=0 , mp=0 , mp=0;
}
//第二种
if(row==1 && col+1<=n && mp==0 && mp==0 && mp==0) {
mp=1 , mp=1 , mp=1;
dfs(row+1,col); //直接下一列
mp=0 , mp=0 , mp=0;
}
//第三种
if(row==0 && col+1<=n && mp==0 && mp==0 && mp==0){
mp=1 , mp=1 , mp=1;
dfs(row+1,col+1);
mp=0 , mp=0 , mp=0;
}
//第四种
if(row==0 && col+1<=n && mp==0 && mp==0 && mp==0){
mp=1 , mp=1 , mp=1;
dfs(row+1,col);
mp=0 , mp=0 , mp=0;
}
}
int main(){
cin>>n;
//搜索方式从上到下从左到右
dfs(0,1);
cout<<cnt%1000000007<<endl;
return 0;
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]