“如何用我的编码打动面试官?我可以在我为打动面试官的问题编写的代码中采用哪些做法?

Posted

技术标签:

【中文标题】“如何用我的编码打动面试官?我可以在我为打动面试官的问题编写的代码中采用哪些做法?【英文标题】:"How to impress interviewers with my coding? What practices can I adopt in the code I've written for the question stated to impress interviewers? 【发布时间】:2019-07-13 06:32:51 【问题描述】:

假设有一个 int 向量。现在我们要合并这样,我们选择 2 个相邻元素 v[I] 和 v[I+1] (对于每个有效的 I )并执行 v[I] = v[I+1] + v[I] 。并擦除 v[I+1]。继续这样做,直到向量中只剩下一个元素。(注意 I=0 & I=v.size()-1 也被认为是相邻的)。所以我们需要尝试所有这些可能的组合(即,如果需要进一步澄清,我们首先采用哪一对并合并事项,请在评论中告诉我)

每次合并时,我们都会执行 cost+= v[I] + v[I+1]。目标是最小化成本。举个例子,向量是 1 2 3。合并 [1 2 3]-> [3 ,3] & cost=3 -> [6] & cost=9 另一种方式 [1 2 3]-> [1,5] & cost=5 -> [6] & cost=11 。那么他们是否有任何算法可以生成具有给定约束的所有排列?

#include<bits/stdc++.h>
using namespace std;
int mn =INT_MAX;
void r(vector<int > v, int sum)

    if(v.size()==1)if( mn >sum) mn=sum; return ;

    for(int i=0;i<v.size();i++)
    
        sum+=v[i]+v[(i+1)%v.size()];
        v[i]=v[i]+v[(i+1)%v.size()];
        v.erase(v.begin()+(i+1)%v.size());
        r(v,sum);
    

int main()

   vector<int> v;//suppose we gave some input to our vector 

   r(v,0);
   cout<<mn;
return 0;


#if you have a better solution, do state it, thankyou!

【问题讨论】:

您是否正在寻找任何算法来确定最低成本,包括蛮力?或者这是关于优化? 非常感谢显示代码,但显示的目的是什么?这是一种解决方案吗?它有问题吗?哪一个? 您似乎使用全局mn 从递归函数r 返回结果。为什么不使用返回值? 使用口语、自我解释的变量和函数名称通常有助于理解代码,包括您自己的代码。 ***.com/questions/31816095/… 【参考方案1】:

您的目标是给面试官留下深刻印象。 他们正在寻找可以在团队中工作并且可以编写可重用代码的人,这些代码可以在需要切换到不同的主题进行工作时交给同事。

为此,学习

养成解释代码的习惯,即编写有用的 cmets 根据“如果代码和注释不匹配,都可能出错”编写cmets 根据“我的 cmets 帮助我在一个没有电脑的岛屿上三个月假期回来后帮助我理解自己的代码”编写 cmets 停止使用全局变量,至少不要使用返回值 对变量和函数使用不言自明的标识符 查看 *** 问题,了解要废除的可疑习惯(例如 Why should I not #include <bits/stdc++.h>?) 了解何时进行优化,不需要时进行优化通常是不值得的 学习针对特定目的进行优化

【讨论】:

谢谢!将尝试实施所述做法。 别忘了:停止使用#include&lt;bits/stdc++.h&gt; 好的..我将停止使用它。 @tos 好点。在 cmets 中有它,但答案中缺少它。谢谢。

以上是关于“如何用我的编码打动面试官?我可以在我为打动面试官的问题编写的代码中采用哪些做法?的主要内容,如果未能解决你的问题,请参考以下文章