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