题面

(这个做题面的大佬太赞啦)

无聊啊~~~然后就写大模拟,然后就从早上写到下午,生活得到了极大的充实

注意事项:

牌库为空之后再抽牌,会重复抽最后一张被抽走牌

无论在任何过程中,游戏结束(主公死或反贼全死),都中断游戏,直接进入输出阶段

所有人一开始都知道主公的身份

每个人都会无条件帮队友无懈掉决斗万箭南蛮

每个人都会无条件无懈掉对手的无懈

每个人都不会无懈掉队友的无懈

玩家自己的出牌阶段,当玩家用完某一张牌之后,他会从头检索自己之前检索过的牌,看看他们是不是现在可以用了。

反贼当然只会决斗主公啦~~~~

忠臣被主公决斗并不能算跳忠

没了

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
struct Player{
int cardsiz,Hp;
char typ;
char card[];
bool eq;
}player[];
char kn[],Car_p[],sss[];
int nxt[],las[];
int n,m,Fz;
bool ed;
void Input();
void Work();
void Output();
void get_card(int );
void Kil(int ,int );
void JD(int ,int );
void NMRQ(int );
void WJQF(int );
bool WXKJ(int ,int ,int );
void JS(int ,int );
int main()
{
Input();
Work();
Output();
return ;
}
void Input(){
int i,j,k;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++) nxt[i]=i+,las[i]=i-;
nxt[n]=,las[]=n;
for(i=;i<=n;i++){
for(j=;j<;j++) player[i].card[j]='U';
scanf("%s",sss),player[i].typ=sss[];
for(j=;j<=;j++) scanf("%s",sss),player[i].card[j]=sss[];
player[i].cardsiz=player[i].Hp=;
if(player[i].typ=='F') Fz++;
player[i].eq=false;
}
for(i=;i<=n;i++) kn[i]='U';
kn[]='M';
for(i=;i<=m;i++)
scanf("%s",sss),Car_p[m-i+]=sss[];
}
void Work(){
int i,j,k;
char cad;
ed=true;
if(Fz) ed=false;
if(ed) return ;
for(i=;i;i=nxt[i]){
get_card(i),get_card(i);
bool kill=true;
for(j=;j<=player[i].cardsiz;j++)
if(player[i].card[j]!='U'){
if(!player[i].Hp) break;
cad=player[i].card[j];
if(cad=='P'){
if(player[i].Hp!=)
player[i].Hp++,player[i].card[j]='U';
continue;
}
if(cad=='K'){
if(!kill&&!player[i].eq) continue;
if(player[i].typ=='M'&&kn[nxt[i]]!='L'&&kn[nxt[i]]!='F') continue;
if(player[i].typ=='Z'&&kn[nxt[i]]!='F') continue;
if(player[i].typ=='F'&&kn[nxt[i]]!='Z'&&kn[nxt[i]]!='M') continue;
player[i].card[j]='U';
Kil(i,nxt[i]);
kn[i]=player[i].typ,kill=false;
if(ed) return ;
continue;
}
if(cad=='F'){
if(player[i].typ=='F'){
player[i].card[j]='U',JD(i,);
kn[i]=player[i].typ;
if(ed) return ;
j=;
continue;
}
for(k=nxt[i];k!=i;k=nxt[k])
if((player[i].typ=='M'&&(kn[k]=='L'||kn[k]=='F'))||(player[i].typ=='Z'&&kn[k]=='F')){
player[i].card[j]='U',JD(i,k);
kn[i]=player[i].typ;
if(ed) return ;
j=;
break;
}
continue;
}
if(cad=='N'){
player[i].card[j]='U';
NMRQ(i);
if(ed) return ;
j=;
continue;
}
if(cad=='W'){
player[i].card[j]='U';
WJQF(i);
if(ed) return ;
j=;
continue;
}
if(cad=='Z'){
player[i].eq=true;
player[i].card[j]='U';
j=;
continue;
}
}
}
}
void Output(){
int i,j;
printf("%s",player[].Hp<=?"FP\n":"MP\n");
for(i=;i<=n;i++){
if(player[i].Hp<=)
printf("DEAD\n");
else{
for(j=;j<=player[i].cardsiz;j++)
if(player[i].card[j]!='U')
printf("%c ",player[i].card[j]);
printf("\n");
}
}
}
void get_card(int x){
if(!m) m++;
player[x].card[++player[x].cardsiz]=Car_p[m];
m--;
}
void Kil(int ker,int ked){
int i,j;
for(i=;i<=player[ked].cardsiz;i++)
if(player[ked].card[i]=='D'){
player[ked].card[i]='U';
return ;
}
player[ked].Hp--;
if(!player[ked].Hp) JS(ker,ked);
}
void JD(int fucker,int fucked){
int i,j,k;
if(WXKJ(fucker,fucked,)) return ;
if(fucker==&&player[fucked].typ=='Z'){
player[fucked].Hp--;
if(!player[fucked].Hp) JS(fucker,fucked);
return ;
}
j=k=;
while(){
while(player[fucked].card[j]!='K'&&j<=player[fucked].cardsiz) j++;
if(j>player[fucked].cardsiz){
player[fucked].Hp--;
if(!player[fucked].Hp) JS(fucker,fucked);
return ;
}
else
player[fucked].card[j]='U';
while(player[fucker].card[k]!='K'&&k<=player[fucker].cardsiz) k++;
if(k>player[fucker].cardsiz){
player[fucker].Hp--;
if(!player[fucker].Hp) JS(fucked,fucker);
return ;
}
else
player[fucker].card[k]='U';
}
}
void NMRQ(int user){
int usto,i;
for(usto=nxt[user];usto!=user;usto=nxt[usto])
if(!WXKJ(user,usto,)){
for(i=;i<=player[usto].cardsiz;i++)
if(player[usto].card[i]=='K'){
player[usto].card[i]='U';
break;
}
if(i>player[usto].cardsiz){
player[usto].Hp--;
if(usto==&&kn[user]=='U') kn[user]='L';
if(!player[usto].Hp) JS(user,usto);
if(ed) return ;
}
}
}
void WJQF(int user){
int usto,i;
for(usto=nxt[user];usto!=user;usto=nxt[usto])
if(!WXKJ(user,usto,)){
for(i=;i<=player[usto].cardsiz;i++)
if(player[usto].card[i]=='D'){
player[usto].card[i]='U';
break;
}
if(i>player[usto].cardsiz){
player[usto].Hp--;
if(usto==&&kn[user]=='U') kn[user]='L';
if(!player[usto].Hp) JS(user,usto);
if(ed) return ;
}
}
}
bool WXKJ(int user,int usto,int fl){
int i=user,j,pd=fl?usto:user;
i=user;
while(){
if(fl==){
if(kn[usto]==player[i].typ||(kn[usto]=='M'&&player[i].typ=='Z')||(kn[usto]=='Z'&&player[i].typ=='M'))
for(j=;j<=player[i].cardsiz;j++)
if(player[i].card[j]=='J'){
player[i].card[j]='U';
kn[i]=player[i].typ;
return !WXKJ(i,user,);
}
}
else{
if(((player[i].typ=='M'||player[i].typ=='Z')&&kn[user]=='F')||(player[i].typ=='F'&&(kn[user]=='M'||kn[user]=='Z')))
for(j=;j<=player[i].cardsiz;j++)
if(player[i].card[j]=='J'){
player[i].card[j]='U';
kn[i]=player[i].typ;
return !WXKJ(i,user,);
}
}
i=nxt[i];
if(i==user) break;
}
return false;
}
void JS(int ker,int ked){
int i;
for(i=;i<=player[ked].cardsiz;i++)
if(player[ked].card[i]=='P'){
player[ked].card[i]='U';
player[ked].Hp++;
return ;
}
las[nxt[ked]]=las[ked];
nxt[las[ked]]=nxt[ked];
if(ked==){
ed=true;
return ;
}
if(player[ked].typ=='F')
Fz--;
if(!Fz){
ed=true;
return ;
}
if(player[ked].typ=='F')
get_card(ker),get_card(ker),get_card(ker);
if(player[ked].typ=='Z'&&player[ker].typ=='M')
player[ker].cardsiz=,player[ker].eq=false;
}

最新文章

  1. JSP 错题
  2. JS 进制转换
  3. .Net中的泛型(where T : class的含义)
  4. Parcelable和Serializable的区别
  5. 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)
  6. poj2965枚举
  7. Objective-C编码规范
  8. JavaWeb核心编程之(四.1)JSP
  9. iOS 发布流程
  10. Sqlserver将数据从一张表插入到另一张表
  11. 版本控制,django缓存,跨域问题解决
  12. Python常用模块--configparser
  13. OCM_第十七天课程:Section7 &mdash;》GI 及 ASM 安装配置 _管理和配置 GRID /实施 ASM 故障组 /创建 ACFS 文件系统
  14. ubuntu 配置sublime text3
  15. javascript将list转换成树状结构
  16. 函数式编程语言(Functional Program Language)
  17. WCF路由服务
  18. *使用配置类定义Codeigniter全局变量
  19. Javascript设计模式理论与实战:适配器模式
  20. Java之数据类型

热门文章

  1. 【Vue】【Router】手动跳转用 this.$router.push() 时 $router 未定义的问题
  2. Python程序的打包-上传到pypi
  3. defer 的常用场景
  4. Git文件状态
  5. Vue2.5开发去哪儿网App 首页开发
  6. vue教程1-06 v-bind属性、class和style
  7. TCP 流量控制、拥塞控制
  8. Spring Boot + Redis
  9. 安装python-devel开发包
  10. JDK7 异常的多重捕获