每日一题(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循环进行寻找每种情况,并通过一加一减进行回溯

相关推荐
EllinY2 小时前
CF2217E Definitely Larger 题解
c++·笔记·算法·构造
玖釉-5 小时前
下一个排列:从字典序到原地算法的完整推导
数据结构·c++·windows·算法
IronMurphy5 小时前
【算法五十】62. 不同路径
算法
会Tk矩阵群控的小木5 小时前
rcs安卓增强短信群发系统搭建与API集成实战教程
矩阵·新媒体运营·安卓·个人开发·tk
影寂ldy5 小时前
C#一维数组
算法
过期动态6 小时前
【LeetCode 热题 100】移动零
java·数据结构·算法·leetcode·职场和发展·rabbitmq
2601_957786776 小时前
多平台账号矩阵管理的技术路径演变:从人工运维到AI驱动的全链路资产化
人工智能·矩阵
2601_957786776 小时前
AI驱动短视频矩阵管理:SaaS工具如何重构企业内容营销工作流
人工智能·矩阵·重构
计算机安禾6 小时前
【算法分析与设计】第10篇:下界理论与NP完全性初步
大数据·人工智能·算法