解析
在代码中展示
AC代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,m,i,j,isCount=0;
//n,m接收输入
//i,j控制循环
//isCount计数
cin>>n>>m;
//接收输入
vector<int> p(n),q(m);
//在这相当于c语言中创建了两个数组,大小分别为n何m
for(i=0,j=0;i<n;i++){
cin>>p[i];
if(j<m){
q[j++]=p[i];
}
}
//初始化数组,p接收所有接水用户,q先p中把前m个接水用户接收,此循环结束后j的值为m的值,也就是j==m
bool flag=true;
//控制结束标志,初始化为true
while(flag){
flag=false;
//重新赋值为false
for(i=0;i<m;i++){
if(q[i]){
q[i]--;
flag=true;
}
//若q(i)的接水时间不为0,则q(i)--,并将结束标志重新赋值为true,表示还有人在接水,继续循环
if(!q[i]&&j<n){
q[i]=p[j++];
}
//若q(i)的接水时间为0,并且存在过接水序列的人数j小于总人数n,则将第j个人加入到接水序列,也就是q(i)=p(j),j自加一;否则接水序列不变,直到接水序列中所有人的接水时间为0,结束外循环
}
if(flag){
isCount++;
}
//如果结束标志flag为真(true),则计数器isCount自加一
}
cout<<isCount<<endl;
//输出结果
return 0;
}