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

Ram*_*uri 4 c++ algorithm coding-style vector

假设有一个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 23。合并[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!
Run Code Online (Sandbox Code Playgroud)

Yun*_*sch 5

您的目标是打动面试官。
他们正在寻找可以在团队中工作并且可以创建可重用代码的人员,这些代码可以在需要切换到其他主题进行工作时移交给同事。

为此,学习

  • 养成解释代码的习惯,即写有用的注释
    • 根据“如果代码和注释不匹配,都可能有错误”来写注释
    • 根据“我在没有计算机的岛上度过三个月的假期后返回,我的评论帮助我理解了自己的代码”
  • 停止使用全局变量,至少不要使用返回值
  • 对变量和函数使用自解释标识符
  • 浏览一下StackOverflow问题以消除可疑的习惯(例如,为什么不#include <bits / stdc ++。h>?
  • 学习何时进行优化,通常不需要付出时间来进行优化
  • 学习针对特定目的进行优化