找水王
#include<iostream> using namespace std; #include<ctime> #define N 100 int main() { cout<<"请输入帖子数:"<<endl; int a[N],s; cin>>s; srand( (unsigned)time( NULL ) ); int m=rand()%10; for(int i=0;i<s;i++) { if(rand()%2==1) {a[i]=m;} else a[i]=rand()%10; } for(int i=0;i<s;i++) cout<<a[i]<<" "; int x=a[0],y=0; for(int i=1;i<s;i++) { if(y>=0) { if(a[i]==x) y++; else y--; } else { x=a[i]; y=0; } } if(y<0) cout<<"没有水王!"<<endl; else cout<<"水王是"<<x<<endl; }
思路:先用随机生成数生成一串代表id的数组,即先随机生成一个数,当随机生成的书取余2后为1时,此时的id为一开始生成的数,否则id为再重新生成的一个数。一开始自己想的是如果水王的帖子数达到一半以上,那么会不会id相连的数最大的是水王!但是3+2的情况就不可以了!同学的思路:用一个变量计数,当这个帖子的id与上一个帖子一样的情况下变量+1,否则-1,当变量<0时,变量归0,且记下此时的id,当到最后变量为正时,记下的id既是水王,否则无水王。
感想:他是怎么想到的。。。。。。