java-Java高要求逻辑训练题

问题描述

Java高要求逻辑训练题
给定等式其中每个字母代表一个数字,且不同数字对应不同字母。编程求出这些数字并且打出这个数字的算术计算竖式。

   A B C D E  +    D F G  +    D F G——————————   X Y Z D E

ABCDEFGXYZ十个字母各不相等并且分别代表0~9
试过用for循环遍历,但是判断条件想得头都大了。同时经常漏掉判断条件得出很多个错误答案
试过用数组代表0~9先求出算数式再代入字母,依然不知从何下手
也试过先找出隐性条件例G==0 F==5 X==A+1 B>=8 但是想得还是头大。
求:
解这个题目是否需要用到算法?
尽量简短的实现代码

万分感谢~~~

解决方案

package test;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Test {

/** * @param args */private static Map<String Integer> map = new HashMap<String Integer>();private static Map<String String> maps = new HashMap<String String>();static {    for (int i = 0; i < 10; i++) {        byte[] bytes = { (byte) (97 + i) };        map.put(new String(bytes).toUpperCase() i);        maps.put(i+"""" new String(bytes).toUpperCase());    }    maps.put("" "" "");    maps.put(""+""+"");}public static Long[] strToLong(String[] ag) {    Long[] lo = new Long[ag.length + 1];    Long res = 0L;    for (int i = 0; i < ag.length; i++) {        char[] ch = ag[i].toCharArray();        String str = """";        for (int j = 0; j < ch.length; j++) {            str = str + map.get(String.valueOf(ch[j])) + """";        }        lo[i] = Long.valueOf(str);        res += lo[i];    }    lo[lo.length - 1] = res;    Arrays.sort(lo);    return lo;}public static String[] maxLong(Long[] str) {    String[] rest = new String[str.length];    long maxLen = str[str.length - 1].toString().length();    for (int i = 0; i < str.length; i++) {        long Len = str[i].toString().length();        long sub = maxLen - Len;        String s = """";        for (int j = 0; j < sub; j++) {            s = "" "" + s;        }        s = s + str[i];            rest[i] = s;    }    return rest;}public static void main(String[] args) {    String[] ag = { ""BAAAA""BAAA""BAABB""BAABB"" };    Long[] lo = strToLong(ag);    String[] str = maxLong(lo);    for (int i = 0; i < str.length; i++) {        if (i == 0 || i == str.length - 1 ){            System.out.print(""   "");        } else {            System.out.print(""+  "");        }        char[] byt = str[i].toCharArray();        for (int j = 0 ; j < byt.length; j++){            System.out.print(maps.get(byt[j]+""""));        }        System.out.println();        if (str.length - 2 == i){            System.out.println(""-------------"");        }         //System.out.println(str[i]);    }}

}

时间: 2024-10-31 21:46:16

java-Java高要求逻辑训练题的相关文章

有人说C#的性能没有java那么高,是吗?

问题描述 有人说C#的性能没有java那么高,是吗? 解决方案 解决方案二:这种帖子哥已经懒得回了.解决方案三:软件的好坏与程序员有关,与语言无关解决方案四:说的很对,还是跟人有关解决方案五:引用1楼xinyaping的回复: 这种帖子哥已经懒得回了. 解决方案六: 解决方案七:我都想爆粗口了!FUCK解决方案八:一个应用不光与开发语言有关系,与数据库.操作系统.硬件有很大关系......解决方案九: 解决方案十:引用1楼xinyaping的回复: 这种帖子哥已经懒得回了. 那你这是在干什么捏?

java成本高?

问题描述 公司搞php的占大部分,只有少数是搞java的,而且只是作后台数据处理的时候有到java.之前听过同事说java开发成本高,网上也有相类似的说法,我没搞明白,成本具体是指哪些?--开发难度大?--维护成本高?--系统搭建成本高?还是别的? 解决方案 首先我们看成本由哪些部分组成1.开发成本 2.服务器成本3.运维成本但是成本的高低不好说,因为和项目的规模很有关系http://www.infoq.com/cn/news/2011/07/java-taobao看一下上面的这篇文章,淘宝为什

job:经典逻辑训练题(1-39)(持续解答)

今天这里放上75道逻辑训练题目,这里每天至少完成一道题目的训练,答案放在题目下方.题目数量也在持续增加收集. 题目放上:  1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 答:    1.先把5升的灌满,倒在6升里,这时6升的壶里有5升水    2.再把5升的灌满,用5升的壶把6升的灌满,这时5升的壶里剩4升水   3.把6升的水倒掉,再把5升壶里剩余的水倒入6升的壶里,这时6升的壶里有4升水   4.把5升壶灌满,倒入

python-如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量

问题描述 如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量 1C #文本向量化 32x32 -> 1x1024def img2vector(filename): returnVect = [] fr = open(filename) for i in range(32): lineStr = fr.readline() for j in range(32): returnVect.append(int(lineStr[j])) return retu

使用Java构建高伸缩性组件

随着多核处理器成为主流,应用开发人员对于如何编写高伸缩性的应用以利用底层硬 件的优势这个问题面临巨大的压力.此外,遗留系统不得不移植到新的架构上.保证应用 伸缩性的一种有效方式是使用高伸缩性组件构建应用.举例来说,在各种应用中, java.util.concurrent.ConcurrentHashMap可以替代同步的HashTable,使应用伸缩性更 好.因此,向应用直接提供一套高伸缩性构造块以引入并行是非常有用的. 我们创建了一套高伸缩性并发Java组件作为Amin库项目的一部分.在本文中,

使用JAVA实现高并发无锁数据库操作步骤分享_java

1. 并发中如何无锁.一个很简单的思路,把并发转化成为单线程.Java的Disruptor就是一个很好的例子.如果用java的concurrentCollection类去做,原理就是启动一个线程,跑一个Queue,并发的时候,任务压入Queue,线程轮训读取这个Queue,然后一个个顺序执行. 在这个设计模式下,任何并发都会变成了单线程操作,而且速度非常快.现在的node.js, 或者比较普通的ARPG服务端都是这个设计,"大循环"架构.这样,我们原来的系统就有了2个环境:并发环境 +

java源码-求解水仙花这题拜托大神了

问题描述 求解水仙花这题拜托大神了 这题算了一半只能自动检索却不能自己手动输入判断!求大神讲解啊!拜托了?????????????? 解决方案 import java.util.Scanner; public class Sxh { public static void main(String[] args) { while (true) { Scanner sc = new Scanner(System.in); String s = sc.next(); int i = Integer.pa

那些属于JAVA的高端项目

问题描述 现在大三了啊自己自学了JAVA想到外面找一个JAVA培训机构学习一下啊!发现他们的项目都差不多啊!都是做网站啊!很想了解那些项目是高端项目啊! 解决方案 解决方案二:也有C/S模式的啊,JAVAME,javaee,Hibernate等等要学的多去了.解决方案三:引用楼主nicejack的回复: 现在大三了啊自己自学了JAVA想到外面找一个JAVA培训机构学习一下啊!发现他们的项目都差不多啊!都是做网站啊!很想了解那些项目是高端项目啊! 高端项目基于这些的基础比如一些高并发海量数据的处理

使用Java构造高可扩展应用

当 CPU 进入多核时代之后,软件的性能调优就不再是一件简单的事情.没有 并行化的程序在新的硬件上可能会运行得比从前更慢.当 CPU 数目增加的时候 ,芯片制造商为了取得最佳的性能/功耗比,降低 CPU 的运行频率是一件非常明 智的事情.相比 C/C++ 程序员而言 , 利用 Java 编写多线程应用已经简单了很 多.然而,多线程程序想要达到高性能仍然不是一件容易的事情.对于软件开发 人员而言, 如果在测试时发现并行程序并不比串行程序快,那不是一件值得惊 讶的事情,毕竟,在多核时代之前, 受到广