问题 1874: [蓝桥杯][2017年第八届真题]分考场

时间限制: 1Sec 内存限制: 128MB 提交: 62 解决: 12

题目描述
n个人参加某项特殊考试。
为了公平,要求任何两个认识的人不能分在同一个考场。
求是少需要分几个考场才能满足条件。
输入
第一行,一个整数n(1<n<100),表示参加考试的人数。
第二行,一个整数m,表示接下来有m行数据
以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。
输出
一行一个整数,表示最少分几个考场。
样例输入
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
样例输出
4

思路:可以抽象为无向图染色问题。相邻顶点不能染相同颜色,问至少要用多少种颜色。

用DFS搜搜搜。
假设 n 个人需要 kcs 个考场 ,先在 kcs 个考场 安排n 个人 如果安排不下 再增加考场数。
通过DFS +剪枝 从所有可能情况中得到最小考场数。

#include<stdio.h>
#include<string.h>
#define N 301
#define min(a,b) a>b?b:a
int gxb[N][N];//关系表
int p[N][N];// 房间状态
int num=N,n;
void DFS(int x,int kcs){//x 代表当前安排了多少个人 kcs 代表考场数if(kcs>=num)return;//剪子 if(x==n+1){num=min(num,kcs);return;}//如果已经安排了n个人,进行判断  int j,k;for(j=1;j<=kcs;j++){//枚举考场k=0;while(p[j][k]&&!gxb[x][p[j][k]])k++;//找到一个空位 并且与该考场人无关系 if(p[j][k]==0)p[j][k]=x,DFS(x+1,kcs),p[j][k]=0;//满足条件 进行下一考生 }                                    //回溯 p[j][0]=x;DFS(x+1,kcs+1);// 如果所有房间都不满足条件 增加房间 p[j][0]=0;//回溯
}
int main(){int m,i,s1,s2;memset(gxb,0,sizeof(gxb));memset(p,0,sizeof(p));scanf("%d\n%d",&n,&m);for(i=1;i<=m;i++){ scanf("%d%d",&s1,&s2);gxb[s1][s2]=gxb[s2][s1]=1;//建关系 }DFS(1,1);printf("%d\n",num);return 0;
}

有疑问留言,没事留个赞 关注一下
题目测试链接:http://www.dotcpp.com/oj/problem1874.html

蓝桥杯 历届试题 分考场 (DFS)-----C语言—菜鸟级相关推荐

  1. 蓝桥杯 历届试题 分考场(DFS+枚举)

    传送门 题目描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输入 第一行,一个整数n(1<n<100),表示参加考试 ...

  2. 蓝桥杯 历届试题 分考场(C语言)

    分考场 问题描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输入格式 第一行,一个整数n(1<n<100),表示参加 ...

  3. 【蓝桥】 历届试题 分考场(DFS,回溯,剪枝,无向图染色问题)

    历届试题 分考场 时间限制:1.0s 内存限制:256.0MB 问题描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输入格式 第 ...

  4. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  5. java 蓝桥杯历届试题 分糖果(题解)

    试题 历届试题 分糖果 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半 ...

  6. 蓝桥杯-历届试题 分巧克力

    问题描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克力中切出 ...

  7. 蓝桥杯 历届试题 分糖果(模拟)

    传送门 题目描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而 ...

  8. [蓝桥杯][历届试题]网络寻路-dfs,图的遍历

    题目描述 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同 ...

  9. 蓝桥杯历届试题----分糖果(模拟)

    问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数 ...

最新文章

  1. 女友问粉丝过万如何庆祝,我发万字长文《保姆级大数据入门篇》感恩粉丝们支持,学姐|学妹|学弟|小白看了就懂
  2. 在一个html加载多个echarts,Echarts一个页面加载多个图表及图表自适应
  3. linux 内核中基于netfilter的编译选项
  4. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  5. PHP 计算每个月的最后一天
  6. python怎么玩pdf_如何使用Python玩转PDF各种骚操作?
  7. 【玩转cocos2d-x之十五】关卡选择的设计
  8. Tableau---数据可视化软件
  9. What?你还搞不懂什么是物体检测?
  10. 万能的BERT连文本纠错也不放过
  11. linux命令和应用程序,在Linux中开发C应用程序时的重要且方便的工具和命令
  12. Caffeine 和 Redis 居然可以这么搭,想不到吧!
  13. 4种常用压缩格式在hadoop中的应用
  14. 亿级流量系统架构之如何支撑百亿级数据的存储与计算【转载 石杉的架构笔记】-1...
  15. 2021 第十二届蓝桥杯大赛软件赛省赛(第二场),C/C++大学B组题解
  16. shell 封装方法_反弹shell逃逸基于execve的命令监控(上)
  17. psp/psvita联机工具xlinkhandheldassistant,平台Xlink Kai
  18. 阿里云安全组是什么?如何配置安全组(图文教程)?
  19. 登录功能前端+后台php
  20. Oauth 第三方授权登陆 facebook google twitter instagram

热门文章

  1. 当 ChatGPT 比你更会写代码,程序员还能干什么?
  2. gradle安装和在idea中使用
  3. unity3d软阴影和硬阴影的原理_在广告摄影中阴影和高光的重要作用和控制技巧...
  4. SGE 和 Slurm对比
  5. IDEA--简易计算器
  6. 做什么副业挣钱快?2021有哪些挣钱的副业?
  7. 蛮族之王,蛮王使用技巧及心得
  8. java tail输出到文件_使用 tail -f 实时观测服务器日志输出
  9. python之self参数用法
  10. DataGrip连接hive报错:[ 08S01] Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:1000