hdu 1172(java版本)
Problem Description
猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。
比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。
现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。
Input
输入数据有多组。每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A,B,C。gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,输入数据结束。
Output
每组输入数据对应一行输出。如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出”Not sure”。
Sample Input
6
4815 2 1
5716 1 0
7842 1 0
4901 0 0
8585 3 3
8555 3 2
2
4815 0 0
2999 3 3
0
Sample Output
3585
Not sure
思路 才开始看到这个题目 就想怎样去记录答案次数 去匹配每个答案及记录最大的 然后思来想去 这个方法不行 (可能是刷的题目太少的原因吧) 然后想到只有四为数字 直接枚举每个四位数字 去匹配每个机器回答的答案
AC代码
import java.util.Scanner;public class hdu1172 {/*** @param args*/class Node{int a;//猜的四位数字int b;//包含正确的数字int c;//正确位置正确数字}static Node node[]=new Node[105];static int n;public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);hdu1172 hdu=new hdu1172();while((n=scan.nextInt())!=0){for(int i=1;i<=n;i++){Node node1=hdu.new Node();node1.a=scan.nextInt();node1.b=scan.nextInt();node1.c=scan.nextInt();node[i]=node1;}int count=0,result = 0; boolean flag=true; for(int i=1000;i<=9999;i++){//枚举每个四位数字for(int j=1;j<=n;j++){flag=check(j,i);if(!flag){break;}}if(flag){count++;result=i;}}if(count==1){//判断是否有多个数字符合匹配答案System.out.println(result);}else{System.out.println("Not sure");}}}private static boolean check(int k, int number) {// TODO Auto-generated method stubint count=0;int num1[]=new int[5];int num2[]=new int[5];boolean mark[]=new boolean[5];num1[1]=node[k].a/1000; num1[2]=(node[k].a%1000)/100; num1[3]=(node[k].a%100)/10; num1[4]=(node[k].a%10);num2[1]=number/1000; num2[2]=(number%1000)/100; num2[3]=(number%100)/10; num2[4]=(number%10); for(int i=1;i<=4;i++){//找出正确数字正确位置的个数if(num1[i]==num2[i]){count++;}}if(count!=node[k].c){return false;}//找出相同数字个数count=0;for(int i=1;i<=4;i++){for(int j=1;j<=4;j++){if(num1[i]==num2[j]&&!mark[j]){mark[j]=true;count++;break;}}}if(count!=node[k].b){return false;}return true;}}
hdu 1172(java版本)相关推荐
- 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
下线最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错 cmd: mvn -v Exception in thread "main" ja ...
- linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本
提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...
- java jnlp被阻止_JNLP应使用特定的Java版本,但会出现错误结果
我在这里面临一个问题.我想使用特殊版本来运行我们的 java webstart应用程序,但只需要一个jnlp. ("经过测试,- blabla我们不能使用新版本- blabla"随 ...
- Ubuntu/Debian 系统切换Java(JVM),修改Java版本,JAVA_HOME
http://blog.mypapit.net/2007/10/how-to-switch-between-different-java-jvm-in-ubuntu-and-debian-gnu-li ...
- mac os x java_Mac OS X和多个Java版本
守着一只汪 在Mac上管理多个Java版本的最简洁方法是使用Homebrew.在内Homebrew,使用:homebrew-cask 安装java的版本jenv 管理已安装的java版本如http:/ ...
- centos 更换java版本_centos7 更换jdk版本
查看java版本 java -version 如果有java版本(如果没有直接看红色虚线以下的) 输入 rpm -qa | grep java会显示以下几条内容: ******* ******** ...
- 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )
文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 在使用 Android 编译时技术 , 涉及 编译时注解 , 注解处理器 ; 开发注解处理器后 , 编译报如下警告 ; 该警告不会影响 ...
- 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
文章目录 一.注解处理器 依赖 编译时注解 二.设置 注解处理器 支持的注解类型 三.设置 注解处理器 支持的 Java 版本 四.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 ...
- 【SmartJob】【隔离装置】WEB/统计程序和隔离程序共享服务器时的JAVA版本冲突问题
SmartJob.DmsWeb与SmartSys共享服务器容易引发Java版本冲突问题: Java版本不正确 UnsupportedClassVersionError Exception in thr ...
最新文章
- UVA 11020 - Efficient Solutions(set)
- JavaScript URL编码 代码片段记忆
- canal mysql多实例_canal搭建实例
- Swift -- 6.函数和闭包
- MATLAB拉格朗日插值
- 使用RichTextBox控件实现系统剪切板功能
- Android Studio 下使用git -- 个人,本地版本控制
- java中输入两个数组并显示_java-将输入存储在两个相关的数组中
- java编写人机聊天_无聊 写了个人机对话的小程序 哈哈!
- Python工作笔记002---PYTHON之DEF函数
- 不同尺寸SMA头介绍以及之间的区别
- IOS 腾讯微博开放平台 SDK 初体验
- MySQL的相关问题
- 2022.4.7学习笔记
- 树莓派4+普通机械硬盘+Netatalk搭建家用Nas+苹果TimeMachine
- OS学习笔记-15(清华大学慕课)处理机调度
- 第10章 大数据与云数据库管理
- 超快!三分钟学会用3DsMax制作波浪效果!大忙人的你也可以忙里偷闲学技术
- 初中晨读必看古诗名句
- CSS,font-family,好看常用的中文字体