沐沐Mnn 2019-03-17 15:40 采纳率: 72.7%
浏览 645
已结题

POJ魔兽世界一之备战:运行结果输出正确,但是poj总是WA(wrong answer),大家帮忙找找原因

题目链接:http://cxsjsx.openjudge.cn/ewar201901/1/

Dev C++和CLion上能过,输出与题目要求一致,可是poj提示WA,大家帮忙找找原因。

#include <iostream>
#include <string>
#include <string.h>

using namespace std;
const int  WARRIOR_NUM = 5;
const int  SPACE_NUM = 10;

class Headquarter{
public:
    int total_hp;
    int color;
    string colorName[SPACE_NUM];
    string names[SPACE_NUM];
    int warrior_num[SPACE_NUM];
    int produce_seq[SPACE_NUM];
    int hp[SPACE_NUM];
public:
    void Init(int, int, const int *, const int*);
    int Produce(int);
};

void Headquarter::Init(int color_, int thp, const int * ini_hp, const int* seq) {
    color = color_;
    total_hp = thp;
    memcpy(hp, ini_hp, SPACE_NUM * sizeof(int));
    memcpy(produce_seq, seq, SPACE_NUM * sizeof(int));
    for(int i=0;i<WARRIOR_NUM;i++)
        warrior_num[i]=0;
    colorName[0] = "red",colorName[1] = "blue";
    names[0] = "dragon",names[1] = "ninja",names[2] = "iceman",names[3] = "lion",names[4] = "wolf";
}

int Headquarter::Produce(int t) {
    int no = t % WARRIOR_NUM;
    int warrior_id = produce_seq[no];
    if(total_hp - hp[warrior_id] >= 0)
    {
        total_hp -= hp[warrior_id];
        warrior_num[warrior_id]++;
        printf("%03d %s %s %d born with strength %d,%d %s in %s headquarter\n",
               t,colorName[color].c_str(),names[warrior_id].c_str(),t+1,hp[warrior_id],
               warrior_num[warrior_id],names[warrior_id].c_str(),colorName[color].c_str());
        return 1;
    }
    else
    {
        no++;
        while(no != t % WARRIOR_NUM)
        {
            int new_id = produce_seq[no];
            if(total_hp - hp[new_id] >= 0)
            {
                total_hp -= hp[new_id];
                warrior_num[new_id]++;
                printf("%03d %s %s %d born with strength %d,%d %s in %s headquarter\n",
                       t,colorName[color].c_str(),names[new_id].c_str(),t+1,hp[new_id],
                       warrior_num[new_id],names[new_id].c_str(),colorName[color].c_str());
                return 1;
            }
            else{no = (no+1)%WARRIOR_NUM;}
        }
        printf("%03d %s headquarter stops making warriors\n",t,colorName[color].c_str());
        return 0;
    }
}

int  main()
{
    int test_num;
    int ini_hp[SPACE_NUM];
    int tNum = 1;
    Headquarter RedHead, BlueHead;
    int redSeq[SPACE_NUM] = {2, 3, 4, 1, 0};
    int blueSeq[SPACE_NUM] = {3, 0, 1, 2, 4};
    cin>>test_num;
    while(tNum<=test_num)
    {
        int t = 0;
        int stop_sign = 1;
        printf("Case:%d\n", tNum);
        int thp;
        cin>>thp;
        for( int i = 0;i < WARRIOR_NUM;i++)
            cin>>ini_hp[i];
        RedHead.Init(0,thp,ini_hp,redSeq);
        BlueHead.Init(1,thp,ini_hp,blueSeq);
        int s1=1,s2=1;
        while(stop_sign)
        {
            if(s1)
                s1 = RedHead.Produce(t);
            if(s2)
                s2 = BlueHead.Produce(t);
            t++;
            if(s1==0 && s2==0) stop_sign = 0;
        }
        tNum++;
    }
    return 0;
}
  • 写回答

1条回答

  • devmiao 2019-03-18 00:01
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试