亚马逊在线技术笔试题
2018-03-30 14:01
344 查看
(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]); }
}
}
}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]); }
}
}
相关文章推荐
- 亚马逊在线技术笔试(Amazon Hiring Campus 2013 - Final 6)
- 2012年9月亚马逊在线笔试题
- 2015网易校招Java开发工程师(技术架构)在线笔试题
- 【面试题】2013亚马逊校园招聘--在线笔试题
- 2015年网易校招Java开发工程师(技术架构)在线笔试题
- 【在线笔试题解题报告系列】微软在线笔试之 2016微软探星夏令营在线技术笔试(时间:2016.07.17)
- 毕业生之瞳——《技术之瞳——叩开阿里之门之在线笔试》
- Google 2015 校招第四轮在线技术笔试 解题报告
- 2016微软探星夏令营在线技术笔试-#1341 : Constraint Checker
- hihocoder 2017微软探星夏令营在线技术笔试 1534 Array Partition
- 2014年亚马逊在线笔试题目及解法_9_24(字符串编辑距离升级版)
- 亚马逊在线笔试题:SpecialSubstring和elimination game
- 2016微软探星夏令营在线技术笔试题解(1)
- 2013亚马逊校园招聘在线笔试题MM-Chess
- Amazon(亚马逊)2014届秋季校园招聘在线笔试题一
- 2014亚马逊在线笔试题目及解决方案(MMChess问题)
- 2016微软探星夏令营在线技术笔试题解(2)
- 2016微软探星夏令营在线技术笔试题解(3)
- 1051 : 补提交卡 hiho模拟面试题2 - google在线技术笔试模拟 By Java
- 2016微软探星夏令营在线技术笔试题解(4)