蓝桥杯-分考场(dfs)
分考场
PREV-53
- 这题的解决方法使用dfs,因为数据很小,才100.
- 每次当前的人人是否可以和前面的组队,设置两个数组group和fri
/*DFS求解:思路每次判断输入的人是否可以和前面的组队
问题描述
  n个人参加某项特殊考试。
  为了公平,要求任何两个认识的人不能分在同一个考场。
  求是少需要分几个考场才能满足条件。
输入格式
  第一行,一个整数n(1<n<100),表示参加考试的人数。
  第二行,一个整数m,表示接下来有m行数据
  以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。*/
package lanQiao;
import java.io.*;
import java.util.*;
public class T457 {
	static boolean [][]fri=new boolean[101][101];//是否是朋友
	static int [][]group=new int[101][101];//group[i][j]表示第i队第j个成员的编号
	static int ans=200;
	static int n,m;
	/**
	 *
	 * @param p 表示第几个人
	 * @param kans 表示前面分成了几个队
	 */
	public static void dfs(int p,int kans) {
		if(kans>=ans)
			return;
		if(p==n+1) {//超出人数返回
			ans=Math.min(kans, ans);
			return;
		}
		for(int i=1;i<=kans;i++) {
			int k=0;
			while(group[i][k]>0&&!fri[p][group[i][k]])
				k++;
			if(group[i][k]==0) {//这里表示可以和第i对组成一队
				group[i][k]=p;
				dfs(p+1,kans);//队数不变
				group[i][k]=0;
			}
		}
		//判断完前面已经组的队伍后,再判断单独组队时,求解的和是否最少
		group[kans+1][0]=p;
		dfs(p+1,kans+1);
		group[kans+1][0]=0;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
		Scanner cin=new Scanner(System.in);
		n=cin.nextInt();m=cin.nextInt();
		for(int i=0;i<m;i++) {
			int a=cin.nextInt(),b=cin.nextInt();
			fri[a][b]=fri[b][a]=true;
		}
		dfs(1,0);
		System.out.println(ans);
	}
}
蓝桥杯-分考场(dfs)的更多相关文章
- 蓝桥杯---剪格子(DFS&BFS)(小总结)
		问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ... 
- 蓝桥杯 倍数问题(dfs,枚举组合数)
		标题:倍数问题 [题目描述]众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数.但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼.现在小葱给了你 n 个数,希望你从这 n 个数 ... 
- 2018蓝桥杯 全球变暖(dfs)
		你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示:........##.....##........##...####....###.. ... 
- 蓝桥杯 地宫寻宝 DFS 动态规划
		#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ... 
- 蓝桥杯 剪邮票 DFS (不错的题目)
		剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的 ... 
- 蓝桥杯 正则问题(dfs)
		1607: 正则问题 时间限制: 1 Sec 内存限制: 256 MB提交: 34 解决: 13[提交][状态][讨论版] 题目描述 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达 ... 
- 蓝桥杯 - 带分数      (DFS)
		历届试题 带分数 时间限制:1.0s 内存限制:256.0MB 问题描写叙述 100 能够表示为带分数的形式:100 = 3 + 69258 / 714. 还能够表示为:10 ... 
- 蓝桥杯-铺瓷砖(dfs)
		问题描述 有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一 ... 
- 蓝桥杯剪格子dfs
		#include<iostream> #include<cstring> #include<iomanip> #include<cmath> #incl ... 
随机推荐
- 吉哥系列故事——完美队形II(马拉车算法)
			吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求 ... 
- codeforces 86D D. Powerful array
			An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary subarray al, a ... 
- Codeforces 1144F Graph Without Long Directed Paths DFS染色
			题意: 输入一张有向图,无自回路和重边,判断能否将它变为有向图,使得图中任意一条路径长度都小于2. 如果可以,按照输入的边的顺序输出构造的每条边的方向,构造的边与输入的方向一致就输出1,否则输出0. ... 
- __getattr__,__getattribute__和__get__的区别
			dir(object) 列出对象的大多数属性 getattr(object, name) 从object对象中获取name字符串指定的属性 hasattr(object, name) 如果objec ... 
- DNS 是什么?如何运作的?
			前言 我们在上一篇说到,IP 地址的发明把我们纷乱复杂的网络设备整齐划一地统一在了同一个网络中. 但是类似于 192.168.1.0 这样的地址并不便于人类记忆,于是发明了 域名(Domain Nam ... 
- Docker之Dockerfile文件
			Dockerfile是一堆指令,每一条指令构建一层,因此每一条指令的内容就是描述该层应当如何构建,在docker build的时候,按照该指令进行操作,最终生成我们期望的镜像文件 Dockerfile ... 
- 数据库之postgreSQL入门操作指南
			一.增 二.删 三.改 四.查 五.SQL操作表 1.增加列 ALTER TABLE table_name ADD column_name datatype; 2.删除一列 ALTER TABLE t ... 
- ES索引Index相关操作&ES数据类型、字符串类型text和keyword区别
			1.查看索引以及删除之前的测试索引 1. 查看索引以及索引数量信息 liqiang@root MINGW64 ~/Desktop $ curl -X GET http://127.0.0.1:9200 ... 
- Fullscreen API All In One
			Fullscreen API All In One 全屏显示 https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API https ... 
- js type automatic conversion
			js type automatic conversion String & Number `255` < 16; false `15` < 16; true `25` < 1 ... 
