一道没什么毛病的模拟题,但是脑残的我居然看别人写的代码,看懂了感觉,但是最后自己打的时候觉得不怎么对,有一条语句看了半天也没看懂,搞我心态。。。
建议大家没看懂的话就别写博客了,真的害人!!!

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int q[105];
int w[105];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(q,0,sizeof(q));
memset(w,0,sizeof(w));
for(int i=1;i<=n;i++)
{
scanf("%d",&q[i]);
w[i]=q[i];
}
int ans=0;
for(int i=1;i<=n;i++)///从每个位置开始
{
int pai=i;
int sum=0;
int now_num=1;///从1开始数
int paishu=n;
while(1)
{
//
while(w[pai]==0) ///如果该位置为0,则下标+1,跳过该位置
{
pai=(pai+1)%n;
if(pai==0) pai=n;///注意:为零的情况
}
if(w[pai]==now_num)
{
sum+=now_num;
w[pai]=0;
pai++;
now_num=1;
paishu--;
if(paishu==0)
{
break;
}
if(pai>n)
{
pai=(pai)%n;
}
}
else
{
pai++;
now_num++;
if(pai>n)
{
pai=pai%n;
}
if(now_num>n) break;
}
if(now_num>n) break;
}
for(int l=1;l<=n;l++)
{
w[l]=q[l];
}
ans=max(ans,sum);
}
printf("%d\n",ans);
}
}
博主分享了一道看似简单的模拟题,但在实际操作中对某代码段困惑不解,指出看懂他人代码并不等同于能准确实现。建议对复杂代码保持独立思考,避免误导。
936

被折叠的 条评论
为什么被折叠?



