亚马逊在线技术笔试题


(1) * 题目:给定一个数组和一个数字,请在这个数组的元素之间添加+-符号,使这个数组元素运算之后的结果是这个数字,
*     比如{2,3,4}1 则2+3-4=1输出这样的等式
*     分析:这是亚马逊2013年在线笔试的一道题目,题目不难,应该使用递归来做
*         若数组只有一个元素,则这个元素和最后数字相等,则输出(元素=数字),
*         若和最后元素不相等,则不输出,返回
*         否则,使用+和-两种符号递归当前数组的第一个元素
*/
void print ( int * a , char * b , int len , int sum ){
for ( int i = 0 ; i < len ; i ++){
cout << a [ i ]<< b [ i ];
}
cout << sum << endl ;
}
void amx01 ( int * a , int start , int len , int sum , char * b , int l , int total ){
    if ( len == 1 ){
    if ( a [ start ]== sum ){
    b [ start - 1 ]= '+' ;
    b [ start ]= '=' ;
    //输出b
    print ( a , b , l , total );
    }
    else if ( a [ start ]==- sum ){
    b [ start - 1 ]= '-' ;
    b [ start ]= '=' ;
    print ( a , b , l , total );
    }
    return ;
    }
    b [ start - 1 ]= '+' ;
    amx01 ( a , start + 1 , len - 1 , sum - a [ start ], b , l , total );
    b [ start - 1 ]= '-' ;
    amx01 ( a , start + 1 , len - 1 , sum + a [ start ], b , l , total );

}
void amx ( int * a , int len , int sum ){
if ( len <= 0 ){
return ;
}
if ( len == 1 ){
if ( a [ 0 ]== sum ){
cout << a [ 0 ]<< "=" << sum << endl ;
}
return ;
}
    char b [ len ];
    amx01 ( a , 1 , len - 1 , sum - a [ 0 ], b , len , sum );
}
int main (){
int a [ 5 ]={ 3 , 4 , 5 , 6 };
int sum = 10 ;
amx ( a , 4 , sum );
}
(2) * 题目如下:
* 每个大于1的数字都可以由其他数字相加组合而成,例如:
* 5=1+4, 5=2+3;
* 7=1+6, 7=2+5, 7=3+4;
* 现要求输入正整数n(n<50),输出所有除n本身外正数相加的不重复组合
* 【例如】
* 输入:
* 8
* 输出:
* 8=1+2+5
* 8=1+3+4
* 8=1+7
* 8=2+6
* 8=3+5
* 分析:可以使用一个整形数组来记录,不断修改数组中的值达到目的
*/

public class chaif {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
p(10);
}
static void print(int[] r,int len){
for(int i=0;i<=len;i++){
System.out.print(r[i]+" ");
//cout<<r[i]<<" ";
}
System.out.println();
}
public static void p(int n) {
int sum = 0, len = 0;
while (sum < n) {
sum += len;
len++;
}
System.out.println(len);
len--;
int r[]=new int[len];
for (int i = 0; i < len; i++) {
r[i] = i + 1;
}
int k = len - 2;
sum-=r[len-1];
while (true) {
if (k == 0 && r[k] == n) {
break;
}
if (sum < n) {
r[k + 1] = r[k] + 1;
k++;
sum += r[k];
} else {
if (sum == n) {
print(r, k);
}
sum -= r[k];
r[--k]++;
sum++;
}
}
}


}

(3)前序中序,求后序

public class Solution {

/**
* @param args
*/
   static int num; static int[] res=new int[7];
   static int[] getPostOrderTraverse(int[] preOrder, int[] midOrder) {   

  boolean state= true;
 if(preOrder.length!=midOrder.length){
  state = false;
 }
 if(preOrder.length==midOrder.length){
  for(int i=0;i<preOrder.length;i++){
 for(int j=0;j<midOrder.length;j++){
 if(preOrder[i]==midOrder[j]){
 break;
 }
 state = false;
 }
  }
 }
//  return state;
 if(midOrder.length==1){
  System.out.print(midOrder[0]+"s");

 res[num++]=midOrder[0];
 return res;
 }
//  char x = sa.charAt(0);
 int x=preOrder[0];
 int mid;
 for(int j=0;j<midOrder.length;j++){
 if(x==midOrder[j]){
mid=j;
int[] c=new int[mid];int cl=0;
int[] d=new int[midOrder.length-mid-1];int dl=0;
for(int k=0;k<midOrder.length;k++){
if(k<mid){
c[cl]=midOrder[k];cl++;
}
else if(k>mid){
d[dl]=midOrder[k];dl++; 
}
}
int[] e=new int[c.length];int el=0;
int[] f=new int[midOrder.length-mid];int fl=0;
for(int k=1;k<midOrder.length;k++){
if(k<=mid){
e[el]=preOrder[k];el++;
}
else if(k>mid){
f[fl]=preOrder[k];fl++; 
}
}
getPostOrderTraverse(e,c);
getPostOrderTraverse(f,d);
res[num++]=x;
System.out.println(x+"d");
 }
 }

 return res;

   }
public static void main(String[] args) {
// TODO Auto-generated method stub
       int[]a={1,3,8,2,6,4,5};
       int[]b={8,3,2,1,5,4,6};
       
       int[]c=getPostOrderTraverse(a,b);
      for(int i=0;i<c.length;i++){
      System.out.print(c[i]);
       }
      

}

}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BasicBasic BasicBasic正是微软公司售出的第一套件。 正是微软公司售出的第一套件。 Basic Basic Basic Basic 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 GW -Basic Basic Basic Basic 、 QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic 、QBasic QBasic QBasic QBasic QBasic 、Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic , 等其中Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 WindowsWindowsWindows Windows的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 序吗?通过学习 序吗?通过学习 序吗?通过学习 序吗?通过学习 VB 就能写出很多应用程序。 就能写出很多应用程序。 就能写出很多应用程序。 就能写出很多应用程序。 就

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值