您的位置:首页 > 其它

10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。 一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数, 就拿。否则就拿最后一个房间的金币

2016-03-21 18:05 423 查看
#include<iostream>
#include<math.h>
#include <time.h>
using namespace std;
int num[10];
inline void SrandNum()
{
num[0]=rand()%100000;
num[1]=rand()%100000;
num[2]=rand()%100000;
num[3]=rand()%100000;
num[4]=rand()%100000;
num[5]=rand()%100000;
num[6]=rand()%100000;
num[7]=rand()%100000;
num[8]=rand()%100000;
num[9]=rand()%100000;
}
int MaxNum()
{
int Max=-1;
for(int i=0;i<10;i++)
{
if(num[i]>=Max)
Max=num[i];
}
return Max;
}
int AfterMax()
{
int Max=-1;
for(int i=0;i<4;i++)
if(num[i]>=Max)
Max=num[i];
for(int i=4;i<9;i++)
if(num[i]>Max)
return num[i];
return num[9];
}
int main()
{
srand((unsigned) time(NULL));
int times=0;
int total=0;
int max=-1;
int afternum=-1;
while(times<1000000)
{
SrandNum();
max=MaxNum();
afternum=AfterMax();
if(afternum==max)
total++;
times++;
}
cout<<total<<endl;
return 0;
}
数值维持在39.8%左右。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: