接水问题题解
2024-07-09 16:09:40
发布于:浙江
5阅读
0回复
0点赞
既然输入数据有多个,那就先安排数组:
const int maxn=10005;
int n,a[maxn],m,ans,maxx;
int main(){
//scanf("%d %d",&n,&m);
cin>>n>>m;
for(int i=1;i<=n;i++){
//scanf("%d",&a[i]);
cin>>a[i];
}
然后按输入顺序一个个按照循环次数减一,直到减成0换到下一位:
int t=m+1;
while(t<=n+1){
for(int i=1;i<=m;i++){
a[i]--;
if(a[i]==0){
a[i]=a[t];
t++;
}
}
ans++;
}
for(int i=1;i<=m;i++){
maxx=max(maxx,a[i]);
}
完整代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=10005;
int n,a[maxn],m,ans,maxx;
int main(){
//scanf("%d %d",&n,&m);
cin>>n>>m;
for(int i=1;i<=n;i++){
//scanf("%d",&a[i]);
cin>>a[i];
}
int t=m+1;
while(t<=n+1){
for(int i=1;i<=m;i++){
a[i]--;
if(a[i]==0){
a[i]=a[t];
t++;
}
}
ans++;
}
for(int i=1;i<=m;i++){
maxx=max(maxx,a[i]);
}
cout<<ans+maxx<<endl;
return 0;
}
这里空空如也
有帮助,赞一个