每日一题(PTAL2-052):吉利矩阵--dfs

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int res=0;
int sum_row[4]={0};
int sum_col[4]={0};
void dfs(int x,int sum,int width){
    if(x==width*width){
        ++res;
        return;
    }
    for(int i=0;i<=sum;i++){
        if(x % width ==width-1 && i!=sum-sum_row[x / width])continue;
        if(x / width ==width-1 && i!=sum-sum_col[x % width])continue;
        if(sum_row[x / width]+i<=sum && sum_col[x % width]+i<=sum){
            sum_col[x % width]+=i;sum_row[x/width]+=i;
            dfs(x+1,sum,width);
            sum_col[x % width]-=i;sum_row[x/width]-=i;
        }
    } 
}
int main(){
    int sum,width;
    cin>>sum>>width;
    dfs(0,sum,width);
    cout<<res;
    return 0;
}

注意点:

1 利用全局变量res存储个数。

2 和岛屿类似 这里用for循环进行寻找每种情况,并通过一加一减进行回溯

相关推荐
放羊郎1 分钟前
机器人跟随算法
算法·机器人
liu****4 分钟前
第十五届蓝桥杯大赛软件赛国赛C/C++大学B组
c++·算法·蓝桥杯·acm
We་ct5 分钟前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
轻微的风格艾丝凡6 分钟前
三相不平衡电流调试经验记录
算法·dsp
老虎062715 分钟前
LeetCode热题100 刷题笔记(第五天)双指针法 「 三数之和 」
笔记·算法·leetcode
汀、人工智能22 分钟前
[特殊字符] 第97课:前K个高频元素
数据结构·算法·数据库架构··数据流·前k个高频元素
沉鱼.4423 分钟前
第十四届题目
数据结构·算法
美式请加冰40 分钟前
简单多状态问题
数据结构·算法·leetcode
计算机安禾43 分钟前
【数据结构与算法】第38篇:图论(二):深度优先搜索(DFS)与广度优先搜索(BFS)
数据结构·算法·矩阵·排序算法·深度优先·图论·宽度优先
佑白雪乐1 小时前
<LeetCode>二叉树前/中/后/层遍历**递归&&非递归**
算法·leetcode·深度优先