过山车

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过山车相关推荐

  1. 过山车java_杭电oj_2063——过山车(java实现)

    packagehduoj;importjava.util.Scanner;///**//* 使用贪心策略://* 优先选择期望partner最少的//*///正解是使用匈牙利算法--最佳指配 publ ...

  2. 航电系统JAVA_航电系统

    航电系统全称"综合航空电子系统",是现代化战斗机的一个重要组成部分,战斗机的作战性能与航空电子系统密切相关. 目录 1简介 2航电系统的发展 ·航电系统向深度和广度发展 ·开放式航 ...

  3. 过山车java,杭电 acm 2063 ( 过山车 )

    Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...

  4. 深圳坪山,中国首个全区全域全车无人的RoboTaxi运营区

    金磊 整理自 凹非寺 量子位 报道 | 公众号 QbitAI 坐标深圳坪山区. 若是这两天你细心留意,就会发现在街上总能看到异于寻常的出租车. 但更加与众不同的是--乘客后排坐,前面无司机. 例如这样 ...

  5. 参加智能车大赛还是电赛?在做电磁炮中我找到了答案

    我们是来自中北大学的参赛队伍(焦道坤,赵之岑,李炳金),同时参加了智能车和电赛,并在2019年全国电子设计竞赛H题组获得国一的成绩,感谢达尔闻邀约. 应标题,我的答案是:智能车-- 虽然连续两年做智能 ...

  6. 成都启之航电商:抖音小店使用效果+性价比产品+直播

    现在的电商已经成了很多人创业的选择,想要更好的创业,那么就要了解抖音带货,毕竟直播可以带来更多流量,那么下面就和成都启之航电商一起来了解抖音小店使用效果+性价比产品+直播,希望对广大电商创业者有所帮助 ...

  7. 2018航电多校练习第9场-快速幂

    2018航电多校练习第9场-快速幂 Rikka with Badminton Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 52428 ...

  8. 便携式航电实时系统测试平台工作台设计

    测试设计工作台 系统安装完成后,可以启动测试设计工作台,进行测试过程的设计. 测试设计工作台软件启动的快捷方式图标为: 1 快捷方式标 测试设计主界面如下图所示. 2 测试设计工作台主界面 测试项目 ...

  9. 【金猿人物展】天云数据雷涛:从数据湖到湖仓一体再到数据编织,完成的是燃油车到油电混再到纯电技术的改造...

    ‍ 雷涛 本文由天云数据CEO雷涛撰写并投递参与"数据猿年度金猿策划活动--2022大数据产业趋势人物榜单及奖项"评选. ‍数据智能产业创新服务媒体 --聚焦数智 · 改变商业 这 ...

最新文章

  1. Rsync命令参数详解
  2. python是人工智能最大骗局-培训三个月拿“高薪”?起底人工智能“速成班”忽悠大法...
  3. 轴等比缩放_CAD教程:自由缩放命令的操作流程
  4. FTP基础知识及排障方法
  5. 启明云端分享| 手把手教你基于DEMO源码快速进行86盒应用开发
  6. 计算机制图实训心得体会,绘图实训心得体会
  7. Apache Superset从入门到放弃(基于python3.6.9)
  8. 天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二
  9. mysql debug log_PHP代码调试与日志
  10. Java 并发编程之同步工具类栅栏 CyclicBarrier
  11. 锤子新机或10月31日发布,罗永浩:与我无关
  12. java获取每月最后一天_java获取每月的最后一天实现方法
  13. 基于JAVA+Servlet+JSP+MYSQL的在线购物系统
  14. c语言代码先来先服务算法_C语言十大经典排序算法(动态演示+代码,值得收藏)...
  15. 使用 Gogs 搭建自己的 Git 服务器
  16. 客户端与服务站《Socket》
  17. 《编写高质量代码:改善Java程序的151条建议》读书笔记
  18. 软考中级网络工程师的就业前景以及考试要求
  19. C盘无法扩展卷(因后面有个恢复分区)——删除恢复分区
  20. antd checkbox 默认选中_antd的CheckBox

热门文章

  1. 双系统windows+ubuntu18.04的安装和基本配置
  2. safari浏览器_浏览器趋势2015年7月:Safari停滞了吗?
  3. PV操作每日一题-独木桥问题
  4. LogoErase:去除移印、丝印、印刷Logo,抹字水(防白水)
  5. em模型补缺失值_如何填补缺失值?看SPSS提供的简单方法
  6. 【无标题】孙溟㠭禅意篆刻《道》
  7. 十二栋文化获近亿元 B 轮融资,险峰旗云独投 1
  8. 使用docker-compose一键部署开源博客wordpress
  9. 北邮通信原理公开课 杨鸿文老师 课程学习笔记【第二课 复信号】
  10. php iconv 过滤特殊字体,关于iconv函数遇特殊字符的处理办法