美文网首页程序员
亚马逊校园招聘在线笔试题(一)

亚马逊校园招聘在线笔试题(一)

作者: Sep_D_Dai | 来源:发表于2019-10-22 08:58 被阅读0次

    题目:给定一个数组和一个数字,请在这个数组的元素之间添加+-符号,使这个数组元素运算之后的结果是这个数字,比如{2,3,4}1 则2+3-4=1输出这样的等式

    分析:这是亚马逊2013年在线笔试的一道题目,题目不难,应该使用递归来做
       若数组只有一个元素,则这个元素和最后数字相等,则输出(元素=数字),
       若和最后元素不相等,则不输出,返回
       否则,使用+和-两种符号递归当前数组的第一个元素

    C++代码如下:

    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);
    }
    

    相关文章

      网友评论

        本文标题:亚马逊校园招聘在线笔试题(一)

        本文链接:https://www.haomeiwen.com/subject/wkvfvctx.html