易截截图软件、单文件、免安装、纯绿色、仅160KB

用java求解一道趣味体:123456789插入+,

 最近在CSDN,看到了一道趣味题:123456789这九个按顺序排列的数,要求在它们之间插入若干个+,-,*,/ ,使其结果正好等于
100如:1*2*3*4+5+6+7*8+9=100。
看了题目后,思考如果用java如何实现。以下是我的解题思路:
思想比较简单,先将插入+,-,*,/后的所有字符串都穷举出来,然后计算哪些字符串等于100。
这里要解决两个问题,一个是怎样将所有的字符串都穷举出来,另一个是怎样将字符串的值计算出来。
第一个问题思路:插入+,-,*,/,其实应该是插入"+", "-", "*", "/", ""。插入""表示相邻数字组成一个数。用递归实现加入每个符号,直到加入最后一个数字。
第二个问题思路:使用栈先将一般的中缀表达式如1*2*3*4+5+6+7*8+9转成后缀表达式1 2 *3 *4 *5 +6 +7 8 *+9 +,
然后再用栈将后缀表达式的值求出,具体思路可以去看下栈在计算表达式值的应用。
以下是具体的代码:
import java.util.Stack;
import java.util.Vector;
public class Hundred {
   
 /**
  * 将中缀表达式转为后缀表达式
  * @param expstr
  * @return
  */
 public static String toPostfix(String expstr) {
  Stack<String> stack = new Stack<String>();
  String postfix = "";
  int i = 0;
  
  while (i < expstr.length()) {
   char ch = expstr.charAt(i);
   switch (ch) {
    case '+':
    case '-': while (!stack.isEmpty()) {
       postfix += stack.pop();
        }
        stack.push(ch +"");
        i++;
        break;
    case '*':
    case '/': while (!stack.isEmpty() && (stack.peek().equals("*")
          || stack.peek().equals("/"))) {
        postfix += stack.pop(); 
        }
    


相关文档:

java分页bean

 from: http://mmblue.javaeye.com/blog/511915
package org.mmblue.common.util;   
  
import java.util.List;   
  
public class PageModel<T> {   
       
    // ......

Java

 十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Intege ......

java队列

 队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为
“先进先出”(FIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,
数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,
后面的数据元素依次向前移动一位。所以,任何时候 ......

Java 理论与实践: 线程池与工作队列

 
贴在我们多线程 Java 编程论坛上最常见的问题之一是“怎样创建线程池?”。几乎在每个服务器应用程序中都会出现线程池和工作队列问题。本文中,Brian Goetz 探讨了线程池的动机、一些基本实现和调优技术以及一些要避免的常见危险。
为什么要用线程池?
诸如 Web
服务器、数据库服务器、文件服务器或邮 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号