Java实现 蓝桥杯 算法提高 扶老奶奶过街
1 问题描述
一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。
五个红领巾各自说话:
A :我和E都没有扶老奶奶
B :老奶奶是被C和E其中一个扶过大街的
C :老奶奶是被我和D其中一个扶过大街的
D :B和C都没有扶老奶奶过街
E :我没有扶老奶奶
已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街?
若有多个答案,在一行中输出,编号之间用空格隔开。
例如
A B C D E(这显然不是正确答案)
2 解决方案
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static ArrayList<Integer> result = new ArrayList<Integer>();
public void getResult(int i, int j) {
//ans[i] = 0表示初始状态,ans[i] = -1表示一定没有扶
//ans[i] = 1表示一定有扶,ans[i] = 2表示有可能扶
int[] ans = new int[5];
//A说
if(i == 0 || j == 0) {
ans[0] = -1;
ans[4] = -1;
} else {
ans[0] = 2;
ans[4] = 2;
}
//B说
if(i == 1 || j == 1) {
ans[2] = 2;
if(ans[4] == 2) {
ans[4] = 1;
} else if(ans[4] == -1)
ans[2] = 1;
} else {
ans[2] = -1;
if(ans[4] == 2) {
ans[4] = -1;
ans[0] = 1;
}
}
//C说
if(i == 2 || j == 2) {
ans[3] = 2;
if(ans[2] == 2)
ans[2] = 1;
else if(ans[2] == -1)
ans[3] = 1;
} else {
if(ans[2] == 1)
return;
else
ans[2] = -1;
ans[3] = -1;
}
//D说
if(i == 3 || j == 3) {
ans[1] = -1;
if(ans[2] == 1)
return;
else if(i == 2 || j == 2) {
ans[2] = -1;
ans[3] = 1;
} else if(i == 1 || j == 1) {
ans[2] = -1;
ans[4] = 1;
}
} else {
ans[1] = 2;
if(ans[2] == 2)
ans[2] = 1;
else if(ans[2] == -1)
ans[1] = 1;
}
//E说
if(i == 4 || j == 4) {
if(ans[4] == 1)
return;
else
ans[4] = -1;
} else {
if(ans[4] == -1)
return;
else
ans[4] = 1;
}
int count = 0, temp = 0;
for(int t = 0;t < 5;t++) {
if(ans[t] == 1) {
count++;
temp = t;
}
}
if(count == 1) {
if(!result.contains(temp))
result.add(temp);
}
return;
}
public static void main(String[] args) {
Main test = new Main();
for(int i = 0;i < 5;i++) {
for(int j = i + 1;j < 5;j++) {
test.getResult(i, j);
}
}
Collections.sort(result);
for(int i = 0;i < result.size();i++) {
char temp = (char) ('A' + result.get(i));
System.out.print(temp+" ");
}
}
}
Java实现 蓝桥杯 算法提高 扶老奶奶过街的更多相关文章
- 算法笔记_152:算法提高 扶老奶奶过街(Java)
目录 1 问题描述 2 解决方案 1 问题描述 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被 ...
- Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)
试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...
- Java实现 蓝桥杯 算法提高 小X的购物计划
试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...
- Java实现 蓝桥杯 算法提高 天天向上(DP)
试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...
- Java实现 蓝桥杯 算法提高 欧拉函数(数学)
试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...
- Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)
试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...
- Java实现蓝桥杯 算法提高 线段和点
算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...
- Java实现蓝桥杯-算法提高 P1003
算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...
- Java实现蓝桥杯 算法提高 八皇后 改
**算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...
随机推荐
- MySQL安装(linux)
Centos 安装mysql 安装mariadb yum install mariadb mariadb-server mariadb-devel 安装mysql rpm -qa | grep MyS ...
- 2018-06-26 jq选择器
0.选择器的目的就是为了方便快速找到元素从而操作元素! 1.基本选择器 * -> 所有标签 #id ->id选择器 .class -> 类选择器 h1,h2 -> 组合选择器 ...
- PC、APP、H5三端测试的区别
一,针对同一个系统功能的测试,三端所测的业务流程是一样的 二,一般情况下手机端和PC端都对应一套后台服务,比如说笔者公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务.交易服 ...
- Vue中如何监听组件的原生事件
在首页开发中,右下角有一个返回顶部的小箭头,将它单独封装成一个BackTop组件,但是它何时出现需要依赖于首页的滑动,即另外一个Scroll组件.如果直接在BackTop组件里面监听,则需要通过thi ...
- C# 数据操作系列 - 11 NHibernate 配置和结构介绍
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用.这一篇,我继续探索NHibernate背后的秘密.嗯,就是这样. 1. NHibe ...
- 14.2 Go性能优化
14.2 Go性能优化 优化手段 1.减少HTTP请求数,合并CSS.JS.图片 2.使用CDN,就近访问 3.启用nginx gzip压缩,降低传输内容大小 4.优化后端api性能 api服务性能优 ...
- vue绑定数据之前 会看到源代码
http://blog.csdn.net/fengjingyu168/article/details/72915468 VUE绑定数据闪现问题 问题描述如下: 1.在HTML中使用Vue为div绑定数 ...
- 腾讯云的ftp搭建
一开始配置完后 发现用xftp链接登录成功 但是列表无法列举出来 然后又用力cmd.filezilla发现都是一个主动被动问题 pasv_enable=YES.pasv_min_port=60000. ...
- 【C#图解教程学习笔记】第13章 委托
13.1 什么是委托 委托是持有一个或多个方法的对象,可将一个方法传递到另一个方法. 委托是用户自定义的引用类型. 13.2 委托概述 类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列 ...
- Spring MVC基于注解@Controller和@RequestMapping开发的一个例子
1.创建web项目 2.在springmvc的配置文件中指定注解驱动,配置扫描器 在 Spring MVC 中使用扫描机制找到应用中所有基于注解的控制器类,所以,为了让控制器类被 Spring MVC ...