북 대 MOOC 제5 주 003:몬스터 월 드 의 2:장비

한 결 과 를 비교 해 보 니 결과 가 모두 맞 았 는데 통과 하지 못 했 어 요................................................... 
사실은 아주 간단 합 니 다.바로 원래 마수 세계 1 을 바탕 으로 무기 의 기능 을 하나 더 추 가 했 습 니 다.그러나 자신 은 한 시간 동안 했 습 니 다.2 주 전에 쓴 프로그램 을 모두 잊 었 습 니 다.자신 이 그 당시 에 쓴 프로그램 주석 이 상세 하지 않 아서 프로그램의 변수 가 많이 잊 어 버 렸 습 니 다.교훈 을 받 아들 이 고 주석 을 자세히 달 아야 합 니 다.당신 의 망각 속 도 는 정말 빠 릅 니 다!!
원제 주소http://cxsjsxmooc.openjudge.cn/2019t3sprintw5/003/
#include 
#include
#include
#include
#include
#include
using namespace std;
typedef map strintmap;
//        
static strintmap strength;
//   
static vector weapon;
//map strength;
//14:30-16:30
//21:25
class Warcraft {
public:
	//    
	string name_;
	//   
	vector nameSeq_;

	//   
	int lifeNum_;
	//        
	
	//       
	int ith;
	//            
	int countIth[5];
	//     
	int countSum;

	//             ,      
	bool hasCout;


	Warcraft(string name, const vector &nameSeq, int lifeNum) {
		name_ = name;
		nameSeq_ = nameSeq;
		lifeNum_ = lifeNum;
		ith = 0;
		countSum = 0;
		hasCout = false;
		for (int i = 0; i < 5; i++)
			countIth[i] = 0;
	}

	bool born(int time)
	{
		for (int i = 0; i < 5; i++)
		{
			//bug1      bug。。。  
			if (hasCout)
			{
				return false;
			}
			//bug2       i++,    +         i
			else if (strength[nameSeq_[ith]] > lifeNum_)
			{
				ith = (ith + 1) % 5;
				continue;
			}
			else
			{
				countIth[ith]++;
				countSum++;
				//bug 5         
				//bug 6          ith=(ith+1)%5   。。。。
				lifeNum_ -= strength[nameSeq_[ith]];

				cout << setw(3) << setfill('0') << time << " " << name_ << " " << nameSeq_[ith] << " " << countSum << " born with strength " << strength[nameSeq_[ith]] << "," << countIth[ith] << " " << nameSeq_[ith] << " in " << name_ << " headquarter" << endl;
				//bug 4  ith=(ith++)%5     ???

				if (nameSeq_[ith] == "dragon")
				{
					cout << "it has a " < redName;
	vector blueName;
	redName.push_back("iceman");
	redName.push_back("lion");
	redName.push_back("wolf");
	redName.push_back("ninja");
	redName.push_back("dragon");

	blueName.push_back("lion");
	blueName.push_back("dragon");
	blueName.push_back("ninja");
	blueName.push_back("iceman");
	blueName.push_back("wolf");

	char a[5][10] = { "dragon", "ninja", "iceman", "lion", "wolf" };
	int n, M;

	cin >> n;
	for (int ii = 0; ii < n; ii++)
	{
		cin >> M;
		cout << "Case:" << ii + 1 << endl;
		for (int i = 0; i < 5; i++)
		{
			int temp;
			cin >> temp;
			//bug 3 a[i]   a[0]。。。
			//strength[a[i]] = temp;
			strength[a[i]] = temp;
		}

		Warcraft wRed("red", redName, M);
		Warcraft wBlue("blue", blueName, M);

		int time = 0;
		//bug 7       while   ,       headquarter stops making warriors,  time++    ,     while      
		//bug 8            ,   &&     wRed    ,         wBlue ,      time++
		//          ,            wRed wBlue,            
		//while (wRed.born(time) && wBlue.born(time))
		//{
		//	time++;
		//}
		while (wRed.born(time))
		{
			wBlue.born(time);
			time++;
		}
		while (wBlue.born(time))
		{
			time++;
		}



		/////////////////////             :
		//    
		//5000
		//200 400 6 70 20  ,
		//wRed wBlue          stops making warriors。        wRed.born(time) false          。
		//          time++。      bug 7     ,        time++,           ,             while (wRed.born(time))  {  }
		//while (wRed.born(time) && wBlue.born(time))
		//{
		//	time++;
		//}

		////bug 7       while   ,       headquarter stops making warriors,  time++    ,     while      
		//time++;
		//while (wBlue.born(time))
		//{
		//	time++;
		//}
		//while (wRed.born(time))
		//{
		//	time++;
		//}
		//return 0;
	}

	//n = 1, M = 20;
	//for (int i = 0; i < 5; i++)
	//{
	//	strength[a[i]] = i+3;
	//}




	return 0;
}

좋은 웹페이지 즐겨찾기