过山车

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. 多传感器融合:自动驾驶(上)
  2. ADMT3.2域迁移之Server2003至Server2012系列(七)安装ADMT3.2
  3. Rowkey设计_HBase表设计
  4. Linux下SSH远程连接断开后让程序继续运行解决办法
  5. (转)Hibernate的配置详解
  6. 做Web应用程序时应该如何面向对象杂谈
  7. 苹果id登录_英雄联盟手游是用苹果ID好还是拳头好 账号选择建议_英雄联盟手游...
  8. 奇妙的定律、理论、原则、效应、...(Amazing Laws,Theories,Principles,Effects,...)
  9. 英语 —— 辅音浊化
  10. Bootstrap(一)
  11. 地理信息系统实习作业——利用ArcGis计算武汉市分区土地利用类型面积
  12. Ubuntu上安装mujoco
  13. plant-UML画图笔记
  14. ActivityManagerService之进程管理(四)
  15. TM4C123-Peripheral Driver Library
  16. 云适配陈本峰:我为什么发起“中国企业级H5产业联盟”
  17. 猿创征文|使用SQL创建学生信息管理数据库(完整)
  18. 金融行业大数据治理之路——数据模型篇
  19. 考研英语——书本资料选择复习规划
  20. Python 批量修改图片格式和尺寸

热门文章

  1. 给 dom 元素添加 onresize 功能
  2. 日语2级终于过了,在大学的最后一年
  3. Qt Stock Exchange System Qt股票交易系统源码 QtK线图 Qt分时图源码
  4. ipv6 压缩 java_IPv6 地址语法
  5. 码绘VS手绘(二) 如何让让静态图“动”起来
  6. GitHub下载指定文件夹的方法(简单快捷)
  7. Filco minila air 与windows10蓝牙连接问题
  8. Jquery 甘特图 插件 jQuery.Gantt
  9. 截瘫的常规治疗措施包含哪些
  10. python人工智能算法包_Python 人工智能算法工具包 SimpleAI