首页 > 其他分享 >hdu 5113 Black And White(DFS染色)

hdu 5113 Black And White(DFS染色)

时间:2024-02-15 16:22:28浏览次数:41  
标签:hdu 5113 int DFS Black White

Problem - 5113 (hdu.edu.cn)

hdu没法提交,我以为我账号又崩了...

#include<iostream>
#include<cstring>
using namespace std;
int T,n,m,k,kase;
int color[30],ans[10][10];
bool DFS(int x,int y,int cur){
    if(x>n) return true;
    for(int i=1;i<=k;i++){
        if(!color[i] || ans[x-1][y]==i || ans[x][y-1]==i) continue;
        color[i]--;
        ans[x][y]=i;
        if(y<m && DFS(x,y+1,cur+1)) return true;
        else if(y==m && DFS(x+1,1,cur+1))  return true;
        color[i]++;
    }
    return false;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>T;
    while(T--){
        cin>>n>>m>>k;
        for(int i=1;i<=k;i++) cin>>color[i];
        cout<<"Case #"<<++kase<<":"<<endl;
        if(DFS(1,1,1)){
            cout<<"YES"<<endl;
            for(int i=1;i<=n;i++){
                cout<<ans[i][1];
                for(int j=2;j<=m;j++) cout<<" "<<ans[i][j];
                cout<<endl;
            }
        }else cout<<"NO"<<endl;
    }
    return 0;
}

 

标签:hdu,5113,int,DFS,Black,White
From: https://www.cnblogs.com/accbulb/p/18016320

相关文章

  • hdu 1175 连连看(DFS+剪枝)
    Problem-1175(hdu.edu.cn)根据转弯次数和有没有找到答案来剪枝#include<iostream>#include<cstring>usingnamespacestd;constintN=1010;intn,m,q,x1,y1,x2,y2,flag;intv[N][N],map[N][N];intdirection[4][2]={{1,0},{-1,0},{0,1},{0,-1}};#definecheck(x,y)......
  • poj 2676 Sudoku(DFS+回溯+剪枝)
    2676--Sudoku(poj.org)#include<iostream>#include<cstring>usingnamespacestd;intt,row[10][10],col[10][10],grid[10][10],map[10][10];boolDFS(intr,intc){if(r==10)returntrue;boolflag=false;if(map[r][c]){if(c=......
  • 【算法】DFS
    DFSDFS是一种遍历或搜索图、树或图像等数据结构的算法,当然这个图、树未必存储下来。常见的是通过某种关系构造出的搜索树,搜索树一般是排列型搜索树和子集型搜索树。DFS一般使用栈或递归。一道模板题#include<bits/stdc++.h>usingnamespacestd;constintN=50;intn,m......
  • DFS基础与回溯
    回溯法简介回溯法一般使用DFS(深度优先搜索(递归))实现,DFS是一种遍历或搜索图,树或图像等数据结构的算法。上述数据结构不保存下来就是回溯法。常见的是搜索树,排列型搜索树(节点数一般为n!)与子集型搜索树(节点数一般为2n)。DFS从起始点开始,沿着一条路尽可能深入,直到无法继续回溯到上......
  • Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)
    @目录题面链接题意题解代码总结题面链接C.KefaandPark题意求叶节点数量,叶节点满足,从根节点到叶节点的路径上最长连续1的长度小于m题解这道题目主要是实现,当不满足条件时直接返回。到达叶节点后统计答案,用vector存图的话,无向图时,叶节点的边只有一条,也就是\(g[i].size()......
  • Poj 2531 Network Saboteur(DFS+剪枝)
    2531--NetworkSaboteur(poj.org)#include<iostream>#include<cstring>usingnamespacestd;constintN=30;intC[N][N],n,ans;boolgroup[N];voidDFS(intnum,intsum){group[num]=true;inttmp=sum;for(inti=1;i<=n;i++){......
  • 力扣回溯 深度优先搜索 dfs 之 17. 电话号码的字母组合
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。 示例1:输入:digits="23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf&qu......
  • N皇后问题拓展(DFS)
    之前用DFS模板写的N皇后问题是采用打表的形式,先把皇后放好再遍历,这样做适合N小于11的问题,写洛谷的题的时候看到了这个N是大于11的,需要新的方法来解决,打表是不适用的。P1219[USACO1.5]八皇后CheckerChallenge-洛谷|计算机科学教育新生态(luogu.com.cn)#include<iostrea......
  • 力扣回溯 深度优先搜索dfs之78. 子集
    给你一个整数数组 nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。 示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]] classSol......
  • hdu 2553 N皇后问题(DFS模板)
    Problem-2553(hdu.edu.cn)#include<iostream>#include<cstring>usingnamespacestd;intn,tot=0;intcol[12];boolcheck(intc,intr){for(inti=0;i<r;i++){if(col[i]==c||(abs(col[i]-c)==abs(i-r)))returnfalse;}r......