package com.Amazon.interview;

/**
* @Author: weblee
* @Email: likaiweb@163.com
* @Blog: http://www.cnblogs.com/lkzf/
* @Time: 2014年10月25日下午5:14:33
*
************* function description ***************
*
* Question:
*
* Given an array with positive integers and another integer for
* example{7 2 4} 9, you are required to generate an equation, by
* inserting operator add ("+") and minus ("-") among the array . The
* left side of equation are consist of the array and the right side of
* equation is the integer. here the result is 7-2+4=9
*
*
*
* Rules:
*
* Don't include any space in the generated equation. In case there is no
* way to create the equation, please output "Invalid". For example {1 1}
* 10, output is "Invalid"
*
* There is no operator "+" or "-" in front of the first number: Don't
* change the order of the numbers. For example: {7 2 4} 9. 7-2+4=9 is
* correct answer, 4-2+7=9 is wrong answer. There could be multiple
* input, meaning your function could be called multiple times. Do
* remember print a new line after the call.
*
* The length of the integer array is from 1 to 15( include 1 and 15). If
* the length is 1, for example the input {7} 7, the output is 7=7
*
* Sample Input and Output:
*
* Input:
*
* 1 2 3 4 10
*
* 1 2 3 4 5
*
* Output:
*
* 1+2+3+4=10
*
* Invalid
*
*
*
****************************************************
*/ public class GenerateEquation {
public static void createEqualAndPrint(int[] a, int n, int target) {
if (a == null || a.length == 0 || a.length != n || n == 0) {
System.out.println("Invalid"); return;
} if (n < 1 || n > 15) {
System.out.println("Invalid");
return;
} int i = n - 1;
int v = 1;
while (i > 1) {
v = (v << 1) + 1;
i--;
} int sum = 0;
String s = null;
while (v > 0) {
sum = a[0];
s = a[0] + "";
for (int j = n - 1; j > 0; j--) {
int c = v >> (j - 1);
if ((c & 1) == 1) {
sum += a[n - j];
s += "+" + a[n - j];
} else {
sum -= a[n - j];
s += "-" + a[n - j];
}
}
if (sum == target) {
System.out.println(s + "=" + target);
return;
} else {
v--;
}
} System.out.println("Invalid.");
} /**
* @param args
*/
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4 }; createEqualAndPrint(a, 4, 2);
} }

面试题: generate an equation, by inserting operator add ("+") and minus ("-") among the array to make equationExpression == 0的更多相关文章

  1. VS2013 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array<int>::operator [](int)”只是在返回类型上不同

    1,VS2013 错误 1 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array ...

  2. Maven实战错误笔记:使用mvn archetype:generate报错:Unable to add module to the current project as it is not of packaging type 'pom'

    在使用mvn archetype:generate生成Maven实战03:HelloWorld中的HelloWorld的项目骨架时报了这个错,从字面上分析是可能与pom.xml文件有关,然后我看了一下 ...

  3. Idiomatic Python手记一: average in FP way

    方法一: import operator def average(*args): return reduce(operator.add, args) / len(args) if args else ...

  4. Delphi泛型动态数组的扩展--转贴

    此文章转载于http://www.raysoftware.cn/?p=278&tdsourcetag=s_pcqq_aiomsg的博客 从Delphi支持泛型的第一天起就有了一种新的动态数组类 ...

  5. [Hive - Tutorial] Querying and Inserting Data 查询和插入数据

    Querying and Inserting Data Simple Query Partition Based Query Joins Aggregations Multi Table/File I ...

  6. C/C++ 笔试题

    /////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...

  7. C/C++笔试题(很多)

    微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...

  8. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  9. 【转】C/C++程序员应聘常见面试题深入剖析

    1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见­. 许多面试题看似简单,却需要深厚的基 ...

随机推荐

  1. [转载](iPhone开发)Bundle Display Name 改为中文。ap

    原文地址:(iPhone开发)Bundle Display Name 改为中文.app显示为中文作者:小新 要先在info的Localizations加入Chinese(zh-Hant) 再進到inf ...

  2. response对象详解

    (响应 javax.servlet.http.HttpServletResponse) 方法名 说明 addCookie 添加一个Cookie对象 addHeader 添加Http文件指定名字头信息 ...

  3. 2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO

     1 缓冲动作 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/4 ...

  4. java注解研究

    注解作用 常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return @author等. 跟踪代码依赖性,实现替代配置文件功能.比较常 ...

  5. Java内存模型浅析

    JVM在执行java程序时会将它所管理的内存划分成若干个不同的数据区域.如图所示: 其中方法区和堆是所有线程共享的数据区,其他区域则是线程隔离的数据区. 这些区域的功能各有不同: 程序计数器:可以理解 ...

  6. .net+easyui--combobox

    一:预定义结构的 select 元素创建组合框(combobox)值固定写死 <select class="easyui-combobox" name="state ...

  7. "只能在执行Render()的过程中调用RegisterForEventValidation" 解决方案

    开发中遇到令人蛋疼的问题: 只能在执行Render()的过程中调用RegisterForEventValidation 当出现的异常的提示: 异常详细信息: System.InvalidOperati ...

  8. SQL Server调优系列进阶篇 - 查询语句运行几个指标值监测

    前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...

  9. WindowListener中的windowClosed方法不执行的问题。

    1.在正常情况下windowClosed方法不执行: 2.调用dispose方法,windowClosed方法会执行.例如:在windowClosing方法中执行dispose方法,windowClo ...

  10. 利用Highcharts制作web图表学习(二)

        最近中海油的项目需要用到图表展示数据,最近还是一直边学习边开发,今天做了一个展示,炼化厂加热炉效率展示的柱状图,把代码贴出来,大家指点一下互相学习,我是通过数组给Highcharts绑定的值, ...