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

    //

        如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。       如果无法分割,则输出 0

    程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割 (m,n<10) 表示表格的宽度和高度 接下来是n行,每行m个正整数,用空格分开。每个整数不大于10000 程序输出:在所有解中,包含左上角的分割区可能包含的最小的格子数目。

    例如: 用户输入: 3 3 10 1 52 20 30 1 1 2 3

    则程序输出: 3

    再例如: 用户输入: 4 3 1 1 1 1 1 30 80 2 1 1 1 100

    则程序输出: 10

    思路:

    dfs

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[11][11];
    int vis[11][11];
    int m, n;
    int sum = 0, s;
    int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
    int res = 0;
    int dfs(int x, int y, int temp)
    {

              if(temp == s) {
            return 1;
        }

         int r = 0;
        for(int i = 0; i < 4; i++) {
            int row = x + dir[i][0];
            int col = y + dir[i][1];
            if(row >= 0 && row < n && col >= 0 && col < m) {
                if( !vis[row][col] && temp + a[row][col] <= s ) {
                    vis[row][col] = 1;
                    r = dfs(row, col, temp + a[row][col]);
                    if( r ){
                        return r + 1;
                    }
                   vis[row][col] = 0;
                }
            }
        }
        return 0;
    }

    int main()
    {
        memset(a, 0, sizeof(a));
        memset(vis, 0, sizeof(vis));
        scanf("%d%d", &m, &n);
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                scanf("%d", &a[i][j]);
                sum += a[i][j];
            }
        }
        if(sum % 2 == 1) {
            printf("0");
        }

        else {
            s = sum / 2;
            if(a[0][0] == s) {
                printf("1");
            }

         else {
                vis[0][0] = 1;
                res = dfs(0, 0, a[0][0]);
                printf("%d", res);
            }
        }
        return 0;

    }

  • 相关阅读:
    Windows 经典DOS命令大全
    Linux常用命令大全(全面)
    Nova 实现的 Fit Instance NUMA to Host NUMA 算法
    计算机组成原理 — 冯诺依曼体系结构
    计算机组成的基本硬件设备
    OpenStack 高性能虚拟机之大页内存
    Ironic 的 Rescue 救援模式实现流程
    SQLite 版本引发的 Python 程序调用问题
    Ceph 故障修复记录(持续更新)
    注册 Ironic 裸金属节点并部署裸金属实例
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4335265.html
Copyright © 2011-2022 走看看