小红书2019算法笔试题

1.反转单词游戏

小红书2019算法笔试题_第1张图片

#include
#include
#include

using namepace std;
void Rev_str(vectorstr){
	for(int i=str.size()-1;i>=0;i--){
		cout<str;
	string temp;
	while(cin>>temp){
		str.push_back(temp);
	}
	Rev_str(str);
	return 0;
}

笔记问题小红书2019算法笔试题_第2张图片

#include 
#include 
using namespace std;





int main()

{

 vector aiData;//原始数组

 int iNum;//原始数组的元素个数

 int iMax_no, iMax_has, iMax_best;

 iMax_no = iMax_has = iMax_best = 0;//no,yes,best初始值全为0

 cout << "请输入笔记数量n: " << endl;
 cin >> iNum;

 cout << "请输入笔记点赞数,空格隔开: " << endl;
 int temp;

 for (int i = 0; i < iNum; ++i)//从前往后一次遍历

 {
  cin >> temp;
  aiData.push_back(temp);
 }
 int iTemp;

 vector< int> vbIndex_no, vbIndex_best, vbIndex_temp;

 for (int i = 0; i < iNum; ++i)

 {

  iTemp = iMax_no; //保存没有前一个数时的最优解(即s[i-2])

  iMax_no = iMax_best; //无当前值a[i](即s[i-1])

  iMax_has = iTemp + aiData[i]; //有当前值a[i](即s[i-2]+a[i])

  vbIndex_temp = vbIndex_no;//保存没有前一个数时的最优解(即s[i-2])//时对应的向量

  vbIndex_no = vbIndex_best;//无当前值a[i](即s[i-1]) 时对应的向量



  if (iMax_no >= iMax_has)

  {

   iMax_best = iMax_no;// best=max(no,yes)???????

  }

  else

  {

   iMax_best = iMax_has;// best=max(no,yes)

   vbIndex_best = vbIndex_temp;//没有前一个数时的最优解(即s[i-2])//时对应的向量

   vbIndex_best.push_back(i);//向量中加上当前值

  }

 }



 cout << iMax_best << " "<< (int)vbIndex_best.size()<

你可能感兴趣的:(算法)