题目描述 https://www.luogu.org/problemnew/show/P1312
大型模拟搜索题
主要思路就是:枚举每一步,该移的移,该消除的消除,该落下的落下,k步后,判断是否消除干净,消除干净就输出。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int map[10][10],ans[10][10],last[10][10][10],xiao[10][10],n;
bool check()//检查是否完全消除
{
for(int i=1;i<=5;i++)
if(map[i][1]) return 0;
return 1;
}
void copy(int x)//回溯时用
{
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
last[x][i][j]=map[i][j];
}//last[d][i][j] 第d步时在i行j列的原状态
void update()//该落的落下来
{
for(int i=1;i<=5;i++)
{
int cnt=0;
for(int j=1;j<=7;j++)
{
if(!map[i][j]) cnt++;
else
{
if(cnt==0) continue;