天天看點

找水王

#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既是水王,否則無水王。

感想:他是怎麼想到的。。。。。。