博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯:剪格子
阅读量:5150 次
发布时间:2019-06-13

本文共 946 字,大约阅读时间需要 3 分钟。

题目地址: http://lx.lanqiao.org/problem.page?gpid=T27

剪开后两边各自的和都是总和的一半。做法是从左上角开始DFS,每次减去搜索到的格子直到为0,然后判断是否为格子最少的情况。

#include 
#include
using namespace std;#define MAX 15int grid[MAX][MAX], queue[MAX*MAX], vis[MAX][MAX];int mini = 99999, m, n;//sum=0则成功,算为一种情况。tot为包含左上角的块数 void dfs(int a, int b, int sum, int tot){ //超出范围则直接返回 if(a>=n || a<0) return; if(b>=m || b<0) return; if(sum < 0) return; if(sum == 0) if(mini > tot) { mini = tot; return; } vis[a][b] = 1; //向四个方向搜索 if(vis[a][b+1] == 0) dfs(a, b+1, sum-grid[a][b+1], tot+1); if(vis[a][b-1] == 0) dfs(a, b-1, sum-grid[a][b-1], tot+1); if(vis[a+1][b] == 0) dfs(a+1, b, sum-grid[a+1][b], tot+1); if(vis[a-1][b] == 0) dfs(a-1, b, sum-grid[a-1][b], tot+1); vis[a][b] = 0;}int main(void){ //freopen("grid.in","r",stdin); int sum=0; scanf("%d %d",&m,&n); for(int i=0; i

 

转载于:https://www.cnblogs.com/mycd/p/5380604.html

你可能感兴趣的文章
jQuery on(),live(),trigger()
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
导航,头部,CSS基础
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
list control控件的一些操作
查看>>
判断字符串在字符串中
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>