IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 11.3 剪枝思想(dfs)——【分考场(2017 年国赛)】 -> 正文阅读

[数据结构与算法]11.3 剪枝思想(dfs)——【分考场(2017 年国赛)】

题目描述

n 个人参加某项特殊考试。

为了公平,要求任何两个认识的人不能分在同一个考场。

求是少需要分几个考场才能满足条件。

输入描述

在这里插入图片描述

输出描述

输出一行一个整数,表示最少分几个考场。

输入输出样例

输入:

5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5

输出:

4



最终代码

1. c/c++

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N];    //关系表
int p[N][N];    // 房间状态  ,第一个N代表第几个放假,第二个N代表该房间的人数
int num = N;    //考场数量
int n,m;

//x 代表当前安排了多少个人 cnt 代表考场数
void dfs(int x, int cnt) 
{     
    if (cnt >= num)   return;  //剪枝
    
    //已经安排了n个人
    if (x == n + 1)
    {         
        num = min(num, cnt);
        return;
    }
    
    
    int j, k;
    
     //枚举考场
    for (j = 1; j <= cnt; j++) 
    {   
        k = 0;
        while (p[j][k] && !a[x][p[j][k]])  //这个可变成a[p[j][k]][x]
            k++;                    //找到一个空位 并且与该考场人无关系
         
         //第j个考场没人,所以就把第x号人——>放在第j个考场   
        if (p[j][k] == 0)
            p[j][k] = x, dfs(x + 1, cnt), p[j][k] = 0; //继续下一考生
    }
    
    p[j][0] = x;
    dfs(x + 1, cnt + 1); // 如果所有房间都不满足条件,增加考场
    p[j][0] = 0;         //回溯
}


int main()
 {
    cin>>n>>m;
    for (int i = 1; i <= m; i++) 
    {
        int u,v;
        cin >> u >>v;
        a[u][v] = a[v][u] = 1;  //用矩阵表示两人的关系
    }
    dfs(1, 1);   //第一个人,第一个考场
    cout <<num;
    return 0;
}



过程理解

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:50:37  更:2022-02-28 15:51:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:27:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码