欢迎光临散文网 会员登陆 & 注册

分裂算法(SA)算法框架(自制)

2023-02-19 22:18 作者:博学不精的玉子  | 我要投稿

主体结构为在一个长x,宽y的长方形中发射xy/2个SA,每个SA会增加total,并往原地放一个SAL,每个SAL会向四周扩散并把原地变成墙,直到没有空位置。

该框架适用于一本通1329.细胞、1249.Lake Counting等

也可以在SAL中加入元素“j”,即可适用于1252.走迷宫等

#include<bits/stdc++.h>

using namespace std;

int a[10001][10001]={0},i,j,total;

void sal(int x,int y){

if(x,y在边框内||a[x][y]=墙) return;

else a[x][y]=墙;

sal(x+1,y,i+1),sal(x,y+1,i+1),sal(x-1,y,i+1),sal(x,y-1,i+1);

}

void sa(int x,int y){

if(x,y在边框内||a[x][y]=='#') return;

total++;

sal(x,y,1);

}

int main(){

cin>>边框x>>边框y;

for(i=1;i<=边框x;i+2)

for(j=1;j<=边框y;j+2)

cin>>a[i][j];

for(i=1;i<=边框x;i+2)

for(j=1;j<=边框y;j+2)

sa(i,j);

cout<<total<<endl;

return 0;

}


分裂算法(SA)算法框架(自制)的评论 (共 条)

分享到微博请遵守国家法律