想写10分的部分分,结果一分没得,求调
#include<bits/stdc++.h>
using namespace std;
int n,m,x,v,y;
char sp[2001];
struct node{
string sf;//身份和猪主眼中的身份
char s[3001];//手牌
int hp=4,flag,cnt=4,zsf=-1;//血量,有没有装备,是否死亡和手牌数
bool kill,sw;
}pig[21];
int check_win(){
if(pig[1].sw)return 1;
for(int i=2;i<=n;i++)
if(pig[i].sf=="FP"&&!pig[i].sw)
return 0;
return 2;
}
void eat_peach(int x){
for(int i=1;i<=pig[x].cnt;i++){
if(pig[x].s[i]=='P'){
pig[x].s[i]='@';
pig[x].hp++;
}
if(pig[x].hp==1)break;
}
return ;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>pig[i].sf;
for(int j=1;j<=4;j++)
cin>>pig[i].s[j];
}
for(int i=1;i<=m;i++)
cin>>sp[i];
pig[1].zsf=1;
while(!check_win()){
//cout<<pig[1].hp<<' '<<pig[2].hp<<'\n';
v++;if(v==n+1)v=1;
if(pig[v].sw)continue;
pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
pig[v].kill=0;
for(int i=1;i<=pig[v].cnt;i++){
if(pig[v].s[i]=='@')continue;
else if(pig[v].s[i]=='P'&&pig[v].hp!=4){
pig[v].s[i]='@';
pig[v].hp++;
}
else if(pig[v].s[i]=='K'&&(!pig[v].kill||pig[v].flag)){
int k=v+1;
if(k==n+1)k=1;
while(pig[k].sw)k++;
//cout<<k<<' ';
if((pig[k].zsf==1&&pig[v].sf=="FP")||(pig[k].zsf==0&&pig[v].sf!="FP")){
int flag=0;
pig[v].s[i]='@';
for(int j=1;j<=pig[k].cnt;j++)
if(pig[k].s[j]=='D'){
pig[k].s[j]='@';
flag=1;
break;
}
//cout<<pig[v].sf<<"->"<<pig[k].sf<<' '<<flag<<'\n';
pig[v].kill=1;
if(flag==0){
if(pig[k].zsf==1)pig[v].zsf=0;
pig[k].hp--;
if(pig[k].hp==0){
eat_peach(k);
if(pig[k].hp==0){
pig[k].sw=1;
if(pig[k].sf=="FP"){
if(check_win)break;
pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
}
if(pig[k].sf=="ZP"&&pig[v].sf=="MP"){
for(int i=1;i<=pig[v].cnt;i++)
pig[v].s[i]='@';
pig[v].flag=0;
}
}
}
}
}
}
}
}
if(check_win()==1)cout<<"FP";
else cout<<"MP";
cout<<'\n';
for(int i=1;i<=n;i++){
if(pig[i].sw)cout<<"DEAD";
else
for(int j=1;j<=pig[i].cnt;j++)
if(pig[i].s[j]!='@')
cout<<pig[i].s[j]<<' ';
cout<<"\n";
}
return 0;
}