C++ 关于趣味取球的算法

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:31:29
题目是这样的:已知袋中有若干个白球和黑球,每次从中取出2个球。如果取出的两个球为同色,则放回一个白球(袋外有足够的白球);如取出的两个球为异色,则放回一个黑球。试设计取球过程的默契程序,并判断最后剩下一个球的颜色!

问题:开始是不是应该把这些球色定义为0或1 放在数组里?? 那怎么做到随机呢?用什么函数?

给个算法吧~~~~~!!!

给,已经编译运行确认:
#include <iostream>
#include <time.h>

using namespace std;

enum Ball
{
white,
black
};

int main(int argc, char *argv[])
{
//定义袋中黑白球的数目
int BlackNum;
int WhiteNum;

//由用户指定袋中的黑白球数目
cout << "请输入袋中白球的数目" << endl;
cin >> WhiteNum;
cout << "请输入袋中黑球的数目" << endl;
cin >> BlackNum;

//初始化随机数种子
srand((unsigned)time(NULL));
int times = 0; //取球的次数

while ((BlackNum + WhiteNum) > 1)
{
++times;
int FirstBall;
int SecondBall;

//每次取得的第一个和第二个球
if (WhiteNum == 0) //袋中已没有白球,则只能取黑球
{
FirstBall = black;
cout << "第 " << times << "次取出的第一个球为黑色" << endl;
--BlackNum;
}
else if (BlackNum == 0)//袋中已没有黑球
{
FirstBall = white;
cout &