first

来源:互联网 发布:gta5捏脸数据女黑寡妇 编辑:程序博客网 时间:2024/06/19 05:12

第一题

1

void Re(char *&str){        if(str)           {        stack<string> s;             char Word[26]={0};                char *mark = str;            char *temp = Word;            while(*mark != '\0')            {                    if(*mark != ' ')                        *temp++ = *mark++;            else                    {                if(0 != strlen(Word))                            {                                    string cpWord = Word;                                    s.push(cpWord);                                    memset(Word,0,26);                                    temp = Word;                            }                            mark++;                    }            }            if(0 != strlen(Word))            {                    string cpWord = Word;                    s.push(cpWord);            }            string restr;             while(!s.empty())            {                    string a = s.top();                    restr += a;                    if(s.size() > 1)                           restr += " ";                    s.pop();            }            str=restr;    }}

第二题

int val(vector<int>& v)  {      int nLen = v.size();      int sum = 0;      for (int i = 0; i < nLen; ++i)           sum += v[i];      vector<vector<int>> dp;      for (int i = 0; i <= len; i++)     {          vector<int> temp;          for (int j = 0; j <= sum / 2; ++j)               temp.push_back(0);          dp.push_back(temp);      }      for (int i = 1; i <= len; ++i)     {          for (int j = 1; j <= sum / 2; ++j)         {              if(j>=v[i-1])dp[i][j] = max(dp[i-1][j],dp[i-1][j-v[i-1]]+v[i-1]);              else dp[i][j] = dp[i - 1][j];          }      }      return sum - 2*dp[nLen][sum / 2];  }  

第三题

假设该点在多边形的某个顶点上然后设置一个初始步长然后按该步长试着向4个方向移动看是不是能得到一比原来更小距离的点如果有的话,把这个点记住,再按当前步长再试,至到往4个方向都不能得到比目前更好的点时,就缩小步长,再按上面的方法做,最后,直到步长接近0时就结束算法。返回这个点
原创粉丝点击