原题题目
代码实现
#include <iostream>
#include <string>
#include <string.h>
#include <iomanip>
using namespace std;
class RedTeam
{
private:
int producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife;
int numbers[5],producechoose;
int time,totalnum;
int lifes[5];
string name[5];
string bornout,teamout;
public:
int Rflag;
RedTeam(int life,int dragon,int ninja,int iceman,int lion,int wolf)
{
producelife = life,dragonlife = dragon,ninjalife = ninja,icemanlife = iceman,lionlife = lion,wolflife = wolf;
lifes[0] = icemanlife,lifes[1] = lionlife,lifes[2] = wolflife,lifes[3] = ninjalife,lifes[4] = dragonlife;
name[0] = "iceman",name[1] = "lion",name[2] = "wolf",name[3] = "ninja",name[4] = "dragon";
producechoose = totalnum = Rflag = time = 0;
memset(numbers,0,sizeof(numbers));
bornout = " born with strength ",teamout = " in red headquarter";
}
void ProducePrint()
{
int i,flag = 0;
for(i=0;i<5;i++)
{
if(producelife >= lifes[producechoose])
{
producelife -= lifes[producechoose];
numbers[producechoose]++;
totalnum++;
cout<<setw(3)<<setfill('0')<<time<<" red ";
cout<<name[producechoose]<<' '<<totalnum<<bornout<<lifes[producechoose]<<',';
cout<<numbers[producechoose]<<' '<<name[producechoose]<<teamout<<endl;
flag = 1;
}
producechoose++;
if(producechoose == 5) producechoose = 0;
if(flag)break;
}
if(flag)
time++;
if(!flag){
Rflag = 1;
cout<<setw(3)<<setfill('0')<<time<<' '<<"red headquarter stops making warriors"<<endl;
}
}
};
class BlueTeam{
private:
int producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife;
int numbers[5],producechoose;
int time,totalnum;
int lifes[5];
string name[5];
string bornout,teamout;
public:
int Bflag;
BlueTeam(int life,int dragon,int ninja,int iceman,int lion,int wolf)
{
producelife = life,dragonlife = dragon,ninjalife = ninja,icemanlife = iceman,lionlife = lion,wolflife = wolf;
totalnum = producechoose = Bflag = time = 0;
name[0] = "lion",name[1] = "dragon",name[2] = "ninja",name[3] = "iceman",name[4] = "wolf";
memset(numbers,0,sizeof(numbers));
lifes[0] = lionlife,lifes[1] = dragonlife,lifes[2] = ninjalife,lifes[3] = icemanlife,lifes[4] = wolflife;
bornout = "born with strength ",teamout = " in blue headquarter";
}
void ProducePrint()
{
int i,flag = 0;
for(i=0;i<5;i++)
{
if(producelife >= lifes[producechoose])
{
producelife -= lifes[producechoose];
numbers[producechoose]++;
totalnum++;
cout<<setw(3)<<setfill('0')<<time<<" blue "<<name[producechoose]<<' '<<totalnum<<' '<<bornout<<lifes[producechoose]<<',';
cout<<numbers[producechoose]<<' '<<name[producechoose]<<teamout<<endl;
flag = 1;
}
producechoose++;
if(producechoose == 5) producechoose = 0;
if(flag == 1)break;
}
if(flag)
time++;
if(!flag){
Bflag = 1;
cout<<setw(3)<<setfill('0')<<time<<" blue headquarter stops making warriors"<<endl;
}
}
};
int main()
{
int testtimes,producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife,i;
cin>>testtimes;
for(i=1;i<=testtimes;i++)
{
cin>>producelife;
cin>>dragonlife>>ninjalife>>icemanlife>>lionlife>>wolflife;
RedTeam R(producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife);
BlueTeam B(producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife);
cout<<"Case:"<<i<<endl;
while(!R.Rflag || !B.Bflag)
{
if(!R.Rflag)R.ProducePrint();
if(!B.Bflag)B.ProducePrint();
}
}
return 0;
}