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实现 蓝桥杯 算法提高 扶老奶奶过街的更多相关文章

  1. 算法笔记_152:算法提高 扶老奶奶过街(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被 ...

  2. Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)

    试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...

  3. Java实现 蓝桥杯 算法提高 小X的购物计划

    试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...

  4. Java实现 蓝桥杯 算法提高 天天向上(DP)

    试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...

  5. Java实现 蓝桥杯 算法提高 欧拉函数(数学)

    试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...

  6. Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)

    试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...

  7. Java实现蓝桥杯 算法提高 线段和点

    算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...

  8. Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  9. Java实现蓝桥杯 算法提高 八皇后 改

    **算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...

随机推荐

  1. Mysql常用sql语句(22)- insert 插入数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 终于讲完基础的查询语句了...这篇讲的就是插入数 ...

  2. 曾开源OpenStack,如今Rackspace再次启动IPO

    导读:Rackspace开源的OpenStack已成为全球仅次于Linux的第二大开源社区,但Rackspace至今仍在苦苦探索路在何方. 近期有国外媒体爆料,美国云计算厂商Rackspace又悄悄准 ...

  3. JUC(3)---CountDownLatch、CyclicBarrier和AQS

    CountDownLatch可以让一个线程等待其他线程完成了各自的工作之后再执行.比如说一个切菜,一个人切肉,都准备完毕之后才能炒肉. 构造方法: public CountDownLatch(int ...

  4. 【雕爷学编程】Arduino动手做(44)---类比霍尔传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  5. react+express实现跨域

    1. 首先复习一下跨域的几种主要方式: a. jsonp b. cors c. 代理服务(开发环境下常用) 2. 代理服务器:可实现转发请求.即浏览器在3000端口发出请求,通过代理转发,将请求发送给 ...

  6. css 箭头三角形

    1.向下的三角形 .down{ display:inline-block; width:0px; height:0px; border-top:8px solid rgba(0, 0, 0, 0.65 ...

  7. HTML新特性--canvas绘图-文本

    一.html5新特性--canvas绘图-文本(重点) #常用方法与属性 -ctx.strokeText(str,x,y);   绘制描边文字(空心) str:绘制文本 x,y:字符串左上角位置(以文 ...

  8. zz 通过INFORMATION_SCHEMA.INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS 三个表获取事务与锁的信息

    zz from http://imysql.com/2015/03/25/mysql-faq-how-to-fetch-latest-trxid.shtml #先查询 INNODB_TRX 表,看看都 ...

  9. 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见

    都是是很专业,并钻石得很深的内容,但,有些事情是交替进行着的深入,太专注于VIRTUAL BOX就必要要牺牲其它的东西.

  10. JavaScript中setInterval关闭问题

    这篇博客主要记录下学习中碰到的一些问题(以防忘记). JavaScript中,在setInterval中关闭该定时器,但是此次执行也会完成,用语言描述不太容易,直接看代码: var i=1; var ...