#include<iostream>
#include<cstring>
#include<iomanip>
#include<cmath>
#include<algorithm> #include<bits/stdc++.h>
using namespace std; int N, M;
int num = INT_MAX, sum = ;
int A[][];
bool visit[][];
bool outOfBorder(int i, int j)
{
if (i < || i >= N || j < || j >= M)
return true;
return false;
} void DFS(int i, int j, int currentSum, int currentNum)
{
visit[i][j] = true;
currentSum += A[i][j];
++currentNum;
if ( * currentSum >= sum)
{
if ( * currentSum == sum)// 如果当前遍历过的数字之和等于所有数字之和的一半
num = min(currentNum, num);// 更新包含左上角格子的那个区域包含的格子的最小数目
visit[i][j] = false;
return;// 回溯到上一结点
}
if (!outOfBorder(i, j + ) && !visit[i][j + ])// 向右移动
DFS(i, j + , currentSum, currentNum); if (!outOfBorder(i + , j) && !visit[i + ][j])// 向下移动
DFS(i + , j, currentSum, currentNum); if (!outOfBorder(i, j - ) && !visit[i][j - ])// 向左移动
DFS(i, j - , currentSum, currentNum); if (!outOfBorder(i - , j) && !visit[i - ][j])// 向上移动
DFS(i - , j, currentSum, currentNum);
visit[i][j] = false;
}
int main(){
cin>>M>>N;
for (int i = ; i < N; ++i)
for (int j = ; j < M; ++j)
{
cin>>A[i][j];
sum += A[i][j];
}
DFS(,,,);
if (num == INT_MAX)
printf("");// 输出0
else
printf("%d",num);
return ;
}

最新文章

  1. spring Mvc + Mybatis 中使用junit
  2. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q121-Q123)
  3. float 的有效数字为七位是怎么得出来的
  4. Python学习笔记02
  5. .NET Remoting学习笔记(一)概念
  6. 如何解决python中urlopen超时问题
  7. Debugging a Parallel Application
  8. Gray码 (格雷码) 【二进制】
  9. 数据结构(RMQ):UVAoj 11235 Frequent values
  10. Grunt.js 上手
  11. JavaScript中闭包实现的私有属性的getter()和setter()方法
  12. 关于JS中数组的分析操作
  13. 利用js实现禁用浏览器后退
  14. 守护态运行Docker容器
  15. ECMAScript 6 入门之let和const的用法
  16. linux每日命令(6):rm命令
  17. js 的深拷贝
  18. ubantu 重启mysql
  19. Jsonpath的基本使用
  20. Linux kernel(CVE-2018-17182)提权漏洞复现

热门文章

  1. mysql 统计值为NULL不为0的问题
  2. H5页面跳到安卓APP和iosAPP
  3. 基础语法-循环结构for
  4. idea修改web项目的访问路径
  5. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
  6. 使用软件模拟spi 时序时注意点
  7. axios基础介绍
  8. Spring创建Bean的顺序
  9. POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑
  10. 14. react 基础 redux 的编写 TodoList 功能