zoukankan      html  css  js  c++  java
  • 蓝桥杯剪格子dfs

    #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 = 0;
    int A[10][10];
    bool visit[10][10];
    bool outOfBorder(int i, int j)
     {
        if (i < 0 || i >= N || j < 0 || 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 (2 * currentSum >= sum)
         {
            if (2 * currentSum == sum)// 如果当前遍历过的数字之和等于所有数字之和的一半
                num = min(currentNum, num);// 更新包含左上角格子的那个区域包含的格子的最小数目
            visit[i][j] = false;
            return;// 回溯到上一结点
        }
        if (!outOfBorder(i, j + 1) && !visit[i][j + 1])// 向右移动
            DFS(i, j + 1, currentSum, currentNum);
            
        if (!outOfBorder(i + 1, j) && !visit[i + 1][j])// 向下移动
            DFS(i + 1, j, currentSum, currentNum);
            
        if (!outOfBorder(i, j - 1) && !visit[i][j - 1])// 向左移动
            DFS(i, j - 1, currentSum, currentNum);
            
        if (!outOfBorder(i - 1, j) && !visit[i - 1][j])// 向上移动
            DFS(i - 1, j, currentSum, currentNum);
        visit[i][j] = false;
    }
    int main(){
      cin>>M>>N;
        for (int i = 0; i < N; ++i)
            for (int j = 0; j < M; ++j) 
            {
                cin>>A[i][j];
                sum += A[i][j];
            }
        DFS(0,0,0,0);
        if (num == INT_MAX)
            printf("0");// 输出0
        else
            printf("%d",num);
        return 0;
    }
  • 相关阅读:
    js的深拷贝特别注意this的深拷贝
    快速的熟悉一个angular的项目从run看起
    关于angular路由中的#
    AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
    css页面缩放
    jquery自定义window事件
    js自定义事件
    git分支
    webpack知识小结--require.context方法
    Vue 创建组件的两种方法
  • 原文地址:https://www.cnblogs.com/h694879357/p/12253450.html
Copyright © 2011-2022 走看看