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的棋 ...
随机推荐
- Shiro+Mybatis实现登录认证、授权功能
Shiro+Mybatis实现登录认证.授权功能 一.实现登录认证功能 1.流程: 跟据用户提交表单的账号,经Mybatis框架在数据库中查出User对象: 如果User为空,则会抛出异常:Unkno ...
- C#如何给WinForm的button等控件添加快捷键
网上有三种方法来设置快捷键,经本人验证后得出最优方法 Alt+*(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在后边加&键 名就可以了,比如b ...
- sqlite聚合函数
常见聚合函数 avg(X) 用于返回组中所有非空列的平均值.字符串(string)或二进制数据(BLOB)等非数字类型当作0来计算.结果是浮点型的数据,即便所有数据中只有一个整数(integer)的数 ...
- Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面介绍过根据id,clas ...
- Redux:pre
If you aren't familiar with state management libraries like Redux or MobX, don't use context. For ma ...
- Null passed to a callee that requires a non-null argument
OC中定义的方法参数默认是不为空的,如果能够为空需要手动指定__nullable ,我想这个警告是提示开发者警惕可能空参数
- poj2455 k条路最小化最长边
Secret Milking Machine Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12414 Accepted ...
- poj2391 最大流+拆点+二分答案+Floyd
Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19553 Accepted: 4 ...
- SQL server数据库的密码策略与登录失败锁定策略
SQL server数据库本身没有密码复杂度策略设置,它是使用Windows操作系统的校验函数来校验账户密码的,所以查看SQL server数据库密码复杂度需要结合操作系统本地安全策略的密码策略来看. ...
- 补充_001_问题_001_Vivian
在此先向前辈们和同学们道个歉,一是没有认真地专研前辈们的精文,二是对一些读者造成了一定程度上的困扰,为此鄙人深感抱歉,现在对"问题_001_Vivian"中不严谨的地方进行修改: ...