糖果颜色不同java,糖果谜题

代码写的有点丑…………

这道题还比较有趣,思路重点就是:

1.相同的合并直至达到对应人数。

2.不相同的独立对应一个人数。

3.相同的超出对应人数,则新对应一个人数。

#include

#include

#include

#include

using namespace std;

int main()

{

vector input;

int tmp;

while(cin>>tmp)

{

input.push_back(tmp);

if(cin.get()=='\n')

break;

}

int n=input.size();

int j;

//辅助数组

vector > aux(n);

vector::iterator it;

//aux[0].first=input[0]+1;

//aux[0].second=1;

for(int i=0;i

{

//不相同

if((it=find(input.begin(),input.begin()+i,input[i]))==(input.begin()+i))

{

aux[i].first=input[i]+1;

aux[i].second=1;

}

//相同

else{

j=it-input.begin();

//相同的要找:最近的

while((it=find(it+1,input.begin()+i,input[i]))!=(input.begin()+i))

{

if(aux[it-input.begin()].first==input[i]+1)

j=it-input.begin();

}

//人数未满

if(aux[j].second

{

aux[j].second+=1;

}

//人数已满

else{

aux[i].first=input[i]+1;

aux[i].second=1;

}

}

}

int num=0;

vector >::iterator it1=aux.begin();

for(;it1

{

if(it1->first!=0)

num+=it1->first;

}

cout<

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值