博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法笔记_152:算法提高 扶老奶奶过街(Java)
阅读量:5371 次
发布时间:2019-06-15

本文共 2897 字,大约阅读时间需要 9 分钟。

目录

 


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
result = new ArrayList
(); 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+" "); } }}

 

转载于:https://www.cnblogs.com/liuzhen1995/p/6780135.html

你可能感兴趣的文章
mac下python实现vmstat
查看>>
jxl.dll操作总结
查看>>
成员函数对象类的const和非const成员函数的重载
查看>>
机器学习实战-----八大分类器识别树叶带源码
查看>>
eclipse git 新的文件没有add index选项
查看>>
java 泛型
查看>>
VC NetShareAdd的用法
查看>>
java web项目中后台控制层对参数进行自定义验证 类 Pattern
查看>>
图论学习一之basic
查看>>
Java的Array和ArrayList
查看>>
记录Ubuntu 16.04 安装Docker CE
查看>>
安东尼奥·维瓦尔第——巴洛克音乐的奇葩
查看>>
pandas的增删改查
查看>>
HDU 5933/思维
查看>>
字节对齐
查看>>
Design Tic-Tac Toe
查看>>
SQL中的去重操作
查看>>
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>