努力努力再努力_越努力越幸运 2017-03-15 13:57 采纳率: 0%
浏览 947

CCF 炉鱼传说为什么我总是得80分,到底少考虑了什么?

#include
using namespace std;
struct gamer{
int total;
int attack[8];
int health[8];
};
struct gamer x,y;//x为先手,y为后手
void moveright(struct gamer *z,int index)
{

for(int i=(*z).total+1;i>index;i--)
{

    (*z).attack[i]=(*z).attack[i-1];
    (*z).health[i]=(*z).health[i-1];

}

}
void moveleft(struct gamer *z,int index)
{
for(int i=index;i<(*z).total;i++)
{
(*z).attack[i]=(*z).attack[i+1];
(*z).health[i]=(*z).health[i+1];
}
(*z).attack[(*z).total]=0;
(*z).health[(*z).total]=0;
}
int main()
{
x.attack[0]=0;x.health[0]=30;//定义0为英雄的位置
y.attack[0]=0;y.health[0]=30;
x.total=0;
x.total=0;
for(int i=1;i<=7;i++)
{
x.attack[i]=0;y.attack[i]=0;
x.health[i]=0;y.health[i]=0;
}
int n,index;
int flag=0;

cin>>n;
while(n--&&x.health[0]>0&&y.health[0]>0)
{

string ope;
cin>>ope;
if(ope=="end")
 {
    if(flag==0)
    flag=1;
    else flag=0;
    continue;
}
if(ope=="summon")
{
    cin>>index;
    if(flag==0&&index<=7&&index>=1&&x.total<=7)
     {

        if(x.health[index]>0)
       {

          moveright(&x,index);
       }

          cin>>x.attack[index]>>x.health[index];
       x.total++;
     }
     else if(flag==1&&index<=7&&index>=1&&y.total<=7)
     {

        if(y.health[index]>0)
       {
          moveright(&y,index);
       }
          cin>>y.attack[index]>>y.health[index];
        y.total++;
     }
}

if(ope=="attack")
{
    int a,b;
    cin>>a>>b;
    if(flag==0&&a>=1&&a<=7&&b>=0&&b<=7)
    {
        x.health[a]=x.health[a]-y.attack[b];
        y.health[b]=y.health[b]-x.attack[a];
        if(x.health[0]<=0)
        break;
        if(y.health[0]<=0)
        break;

        if(x.health[a]<=0)
        {
            moveleft(&x,a);x.total--;
        }
        if(y.health[b]<=0)
       {
            moveleft(&y,b);y.total--;
         }
    } 
    else    if(flag==1&&a>=1&&a<=7&&b>=0&&b<=7)
    {
        y.health[a]=y.health[a]-x.attack[b];
        x.health[b]=x.health[b]-y.attack[a];
        if(x.health[0]<=0)
        break;
        if(y.health[0]<=0)
        break;
        if(y.health[a]<=0)
         {
         moveleft(&y,a);y.total--;
         }
        if(x.health[b]<=0)
         {
         moveleft(&x,b);x.total--;
         }
    } 

}

}

if(x.health[0]!=0&&y.health[0]==0)
cout<<"1"<<endl;
else if(x.health[0]==0&&y.health[0]!=0)
cout<<"-1"<<endl;
else cout<<"0"<<endl;

cout<<x.health[0]<<endl;
cout<<x.total<<" ";
for(int i=1;i<=x.total;i++)
cout<<x.health[i]<<" ";
cout<<endl;

cout<<y.health[0]<<endl;
cout<<y.total<<" ";
for(int i=1;i<=y.total;i++)
cout<<y.health[i]<<" ";

return 0;
}

  • 写回答

1条回答 默认 最新

  • shen_wei 2017-03-16 02:10
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致