我就想问下网易有道第一题最有攻击方式这个我错在哪里了。。。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void getIndex(vector<int>&res,int a,int b,int &n,vector<int>&r)
{
vector<int>::iterator it=max_element(res.begin()+1,res.end()-1);
if(*it>=0)
{
*it=*it-a;
vector<int>::iterator t1=it-1;
vector<int>::iterator t2=it+1;
*t1=*t1-b;
*t2=*t2-b;
n++;
r.push_back(it-res.begin()+1);
}
else
{
if(res[0]>=0)
{
res[1]=res[1]-a;
res[2]=res[2]-b;
res[0]=res[0]-b;
n++;
r.push_back(2);
}
if(res[res.size()-1]>=0)
{
int len=res.size()-1;
res[len-1]=res[len-1]-a;
res[len-2]=res[len-2]-b;
res[len]=res[len]-b;
n++;
r.push_back(len);
}
}
return;
}
int main()
{
int n,a,b;
while(cin>>n>>a>>b)
{
vector<int> _in(n);
vector<int> res;
for(int i=0;i<n;i++)
cin>>_in[i];
int num=0;
while(true)
{
vector<int>::iterator it=max_element(_in.begin(),_in.end());
if(*it<0)
{
break;
}
else
{
getIndex(_in,a,b,num,res);
}
}
cout<<num<<endl;
for(int i=0;i<res.size();i++)
cout<<res[i]<<" ";
cout<<endl;
}
return 0;
}
#网易#
查看2道真题和解析