过山车java_航电java2063过山车
过山车
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 37448 Accepted Submission(s): 15826
Problem Description
RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑到经费问题,boss刘决定只让找到partner的人去坐过山车,其他的人,嘿嘿,就站在下面看着吧。聪明的Acmer,你可以帮忙算算最多有多少对组合可以坐上过山车吗?
Input
输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
Output
对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。
Sample Input
6 3 3
1 1
1 2
1 3
2 1
2 3
3 1
0
Sample Output
3
Author
PrincessSnow
首先想到的直接用dfs的方式找出所有可能
代码如下:
import java.util.Scanner;
public class Main {
static int[][] map;
static int k, n, m, res;
static int[] a;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
res = 0;
k = input.nextInt();
if(k ==0)
break;
n = input.nextInt();
m = input.nextInt();
a = new int[m + 1];
map = new int[n + 1][m + 1];
for (int i = 0; i < k; i++) {
int x, y;
x = input.nextInt();
y = input.nextInt();
map[x][y] = 1;
}
dfs(1, 0);
System.out.println(res);
}
}
public static void dfs(int index, int count){
if(index>n){
if(count>res){
res = count;
}
return;
}
for (int i=1; i<=m; i++){
if(map[index][i]==1 && a[i]==0){
a[i] = 1;
dfs(index+1, count+1);
a[i] =0;
}
}
dfs(index+1, count);
}
}
然而直接超时
网上搜了下思路就是匈牙利算法,然后本人按照思路自己写了一下,代码加上了自己的理解
就是直接将女生第一个中意的男生直接分配给女生
重点来了就是当女生中意的男生被选了,就试着让选中该男生的女生换一个男生选。本人简短介绍一下,代码有注释。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int[][] map = new int[501][501];//用来存女生是否中意男生
static int k, n, m;
static int[] a = new int[501], b = new int[501];//a数组用来标记选取状况0-1,b数组存的是选中这个男生的女生编号
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
k = input.nextInt();
if(k ==0)
break;
n = input.nextInt();
m = input.nextInt();
//初始化操作,因为有多组数据,所以每次循环要初始化为0
Arrays.fill(b, 0);
for (int i=0; i<=n; i++){
Arrays.fill(map[i], 0);
}
int x, y;
for (int i = 0; i < k; i++) {
x = input.nextInt();
y = input.nextInt();
map[x][y] = 1;
}
int res=0;
for(int i=1; i<=n; i++){//遍历每个女生
Arrays.fill(a, 0);
if(dfs(i))//查看女生是否能找到伴,是就res+1
res++;
}
System.out.println(res);//最后输出结果
}
}
public static boolean dfs(int index){
for (int i=1; i<=m; i++){//遍历每个男生
if(map[index][i]==1 && a[i]==0){//中意,并且没有被标记
a[i]=1;//先将男生i标记为选中
if(b[i]==0 || dfs(b[i])){//假如b[i]==0就是说男生还没有被选, 就会直接执行下面的,如果b[i]不等于0,dfs(b[i])就让选中该男生的女生换一个选。
b[i] = index;//标记第i个男生的女伴为index
return true;
}
}
}
return false;
}
}
过山车java_航电java2063过山车相关推荐
- 过山车java_杭电oj_2063——过山车(java实现)
packagehduoj;importjava.util.Scanner;///**//* 使用贪心策略://* 优先选择期望partner最少的//*///正解是使用匈牙利算法--最佳指配 publ ...
- 航电系统JAVA_航电系统
航电系统全称"综合航空电子系统",是现代化战斗机的一个重要组成部分,战斗机的作战性能与航空电子系统密切相关. 目录 1简介 2航电系统的发展 ·航电系统向深度和广度发展 ·开放式航 ...
- 过山车java,杭电 acm 2063 ( 过山车 )
Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...
- 深圳坪山,中国首个全区全域全车无人的RoboTaxi运营区
金磊 整理自 凹非寺 量子位 报道 | 公众号 QbitAI 坐标深圳坪山区. 若是这两天你细心留意,就会发现在街上总能看到异于寻常的出租车. 但更加与众不同的是--乘客后排坐,前面无司机. 例如这样 ...
- 参加智能车大赛还是电赛?在做电磁炮中我找到了答案
我们是来自中北大学的参赛队伍(焦道坤,赵之岑,李炳金),同时参加了智能车和电赛,并在2019年全国电子设计竞赛H题组获得国一的成绩,感谢达尔闻邀约. 应标题,我的答案是:智能车-- 虽然连续两年做智能 ...
- 成都启之航电商:抖音小店使用效果+性价比产品+直播
现在的电商已经成了很多人创业的选择,想要更好的创业,那么就要了解抖音带货,毕竟直播可以带来更多流量,那么下面就和成都启之航电商一起来了解抖音小店使用效果+性价比产品+直播,希望对广大电商创业者有所帮助 ...
- 2018航电多校练习第9场-快速幂
2018航电多校练习第9场-快速幂 Rikka with Badminton Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 52428 ...
- 便携式航电实时系统测试平台工作台设计
测试设计工作台 系统安装完成后,可以启动测试设计工作台,进行测试过程的设计. 测试设计工作台软件启动的快捷方式图标为: 1 快捷方式标 测试设计主界面如下图所示. 2 测试设计工作台主界面 测试项目 ...
- 【金猿人物展】天云数据雷涛:从数据湖到湖仓一体再到数据编织,完成的是燃油车到油电混再到纯电技术的改造...
雷涛 本文由天云数据CEO雷涛撰写并投递参与"数据猿年度金猿策划活动--2022大数据产业趋势人物榜单及奖项"评选. 数据智能产业创新服务媒体 --聚焦数智 · 改变商业 这 ...
最新文章
- Rsync命令参数详解
- python是人工智能最大骗局-培训三个月拿“高薪”?起底人工智能“速成班”忽悠大法...
- 轴等比缩放_CAD教程:自由缩放命令的操作流程
- FTP基础知识及排障方法
- 启明云端分享| 手把手教你基于DEMO源码快速进行86盒应用开发
- 计算机制图实训心得体会,绘图实训心得体会
- Apache Superset从入门到放弃(基于python3.6.9)
- 天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二
- mysql debug log_PHP代码调试与日志
- Java 并发编程之同步工具类栅栏 CyclicBarrier
- 锤子新机或10月31日发布,罗永浩:与我无关
- java获取每月最后一天_java获取每月的最后一天实现方法
- 基于JAVA+Servlet+JSP+MYSQL的在线购物系统
- c语言代码先来先服务算法_C语言十大经典排序算法(动态演示+代码,值得收藏)...
- 使用 Gogs 搭建自己的 Git 服务器
- 客户端与服务站《Socket》
- 《编写高质量代码:改善Java程序的151条建议》读书笔记
- 软考中级网络工程师的就业前景以及考试要求
- C盘无法扩展卷(因后面有个恢复分区)——删除恢复分区
- antd checkbox 默认选中_antd的CheckBox
热门文章
- 双系统windows+ubuntu18.04的安装和基本配置
- safari浏览器_浏览器趋势2015年7月:Safari停滞了吗?
- PV操作每日一题-独木桥问题
- LogoErase:去除移印、丝印、印刷Logo,抹字水(防白水)
- em模型补缺失值_如何填补缺失值?看SPSS提供的简单方法
- 【无标题】孙溟㠭禅意篆刻《道》
- 十二栋文化获近亿元 B 轮融资,险峰旗云独投 1
- 使用docker-compose一键部署开源博客wordpress
- 北邮通信原理公开课 杨鸿文老师 课程学习笔记【第二课 复信号】
- php iconv 过滤特殊字体,关于iconv函数遇特殊字符的处理办法