女孩子的试炼攻略:

#include<cstdio>
#include"windows.h"
int hp0=515,atk1=10,dex1=10;
int monstercount=19;
int bounscount=33;
int allmonster=7;
struct enemys{short hp,atk,dex,spj;//0都没有1魔攻2兼顾3先攻4二连击
}enemy[7];
short allstatus[524288]={};//对应状态最大hp
char atk0[524288]={};//状态拿到攻击
char dex0[524288]={};//状态拿到防御
char mdef[524288]={};//状态拿到魔防
short extrahp[524288]={};//状态拿到血瓶量
int pre[524288]={};//状态的前驱,用于输出路线
int enemy2[19]={};//打败对应敌人需要打败的前置敌人,为零表示没有,多个前置敌人一个即可 -2初始  -1直接打  0不能到达
char bouns[38]={};//每个编号的宝物是什么
short fight(short myhp,short myatk,short mydex,short mymdef,short enemyhp,short enemyatk,short enemydex,short spj)
{if(spj==1)mydex=0;if(spj==2)myatk=enemydex+1;if(spj==3)enemyhp+=(myatk-enemydex);//先攻理解成增加敌人一回合血量,降低复杂度不用重新判断。short damage=(enemyhp-1)/(myatk-enemydex)*(enemyatk-mydex);if(spj==4)damage*=2;damage-=mymdef;if(damage<0)damage=0;return myhp-damage;
}
struct pos{int x,y;}
yellowdoor[4],bluedoor[3],monster[20]={};char enemys[19]={3,3,2,4,0,2,3,3,1,5,0,1,5,5,1,1,2,4,6};
char map[13][13]={{04,9,11,00,05,11,37,11,04,00,11,9,05},{11,11,11,04,11,00,13,00,11,05,11,11,11},{11,00,36,00,11,06,00,35,11,00,34,00,11},{06,33,00,11,32,00,11,05,04,11,00,31,07},{04,12,00,04,00,11,11,11,11,11,07,12,04},{13,00,07,00,30,00,07,00,06,11,29,00,11},{05,28,11,00,11,11,11,11,00,27,00,07,11},{07,11,00,26,11,07,05,11,11,11,11,00,11},{11,9,11,00,00,11,25,06,11,07,11,24,04},{07,11,23,00,00,00,00,12,05,00,11,00,11},{06,00,06,11,22,11,00,11,21,11,11,07,11},{11,20,13,05,00,12,00,00,00,00,11,00,11},{07,00,04,11,11,11,00,11,00,19,00,05,11}};//4红 5蓝 6绿 7红血 9绿血 11墙 0空 12黄门 13 蓝门 19~37怪物
char map1[13][13]={};
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
void clear()
{for(int i=0;i<524288;i++)allstatus[i]=atk0[i]=dex0[i]=mdef[i]=extrahp[i]=pre[i]=0;allstatus[0]=hp0;}int check()
{int maxx=0;int pos=0;for(int i=262144;i<524288;i++)if(allstatus[i]>maxx)maxx=allstatus[i],pos=i;return pos;
}
void out(int st)
{int uju=st;int tail=0;int route[20]={};while(st){route[tail++]=st;st=pre[st];}printf("\n路线:\nhp:%d\n",allstatus[uju]);for(int i=tail-1;i>=0;i--)printf("%x\n",route[i]);
}
void dynamic()
{for(int i=1;i<524288;i++){if(i==0x20094)int dfgsdfgdf=0;for(int j=0;j<19;j++){int k=1<<j;if((i&k)&&allstatus[i^k]>0&&(enemy2[j]==-1||(enemy2[j]&(i^k))))//在节点,上一状态存在,怪物可以直接打,前置怪物打过了{int tmp=fight(allstatus[i^k],atk0[i^k],dex0[i^k],mdef[i^k],enemy[enemys[j]].hp,enemy[enemys[j]].atk,enemy[enemys[j]].dex,enemy[enemys[j]].spj);//tmp剩余血量if(tmp<=0)continue;tmp+=extrahp[i]-extrahp[i^k];if(tmp>allstatus[i])allstatus[i]=tmp,pre[i]=i^k;}}}
}
void bfs(int st,int x,int y)
{if(st==343434)int gdfgsdf=0;bool tgt[13][13]={};int tou=0,wei=0;pos q[444]={};q[0].x=x,q[0].y=y;tgt[x][y]=1;while(tou<=wei){int tx=q[tou].x,ty=q[tou].y;for(int i=0;i<4;i++){int txx=tx+dx[i],tyy=ty+dy[i];if(txx<13&&txx>=0&&tyy<13&&tyy>=0&&tgt[txx][tyy]==0&&map1[txx][tyy]<10)q[++wei].x=txx,q[wei].y=tyy,tgt[txx][tyy]=1;}tou++;}for(int i=0;i<13;i++)for(int j=0;j<13;j++)if(tgt[i][j])switch(map1[i][j]){case 4:atk0[st]++;break;case 5:dex0[st]++;break;case 6:mdef[st]+=4;break;case 7:extrahp[st]+=40;break;case 9:extrahp[st]+=193;break;default:break;}
}
void bfs3(int x,int y)
{bool tgt[13][13]={};//走空地和物品int tou=0,wei=0;pos q[444]={};q[0].x=x,q[0].y=y;tgt[x][y]=1;while(tou<=wei){int tx=q[tou].x,ty=q[tou].y;for(int i=0;i<4;i++){int txx=tx+dx[i],tyy=ty+dy[i];if(txx<13&&txx>=0&&tyy<13&&tyy>=0&&tgt[txx][tyy]==0&&map[txx][tyy]<10)q[++wei].x=txx,q[wei].y=tyy,tgt[txx][tyy]=1;}tou++;}bool tgt2[13][13]={};//距离为1的怪物可以打for(int i=0;i<19;i++)enemy2[i]=-2;for(int i=0;i<19;i++){int tmpx=monster[i].x,tmpy=monster[i].y;for(int j=0;j<4;j++){int txx=tmpx+dx[j],tyy=tmpy+dy[j];if(txx<13&&txx>=0&&tyy<13&&tyy>=0&&tgt[txx][tyy]){enemy2[i]=-1;break;}}}for(int i=0;i<524288;i++)atk0[i]+=atk1,dex0[i]+=dex1;
}
int bfs2(int x,int y)
{int tmp=map[x][y];bool tgt[13][13]={};//走空地和物品map[x][y]=0;int tou=0,wei=0;pos q[444]={};q[0].x=x,q[0].y=y;tgt[x][y]=1;while(tou<=wei){int tx=q[tou].x,ty=q[tou].y;for(int i=0;i<4;i++){int txx=tx+dx[i],tyy=ty+dy[i];if(txx<13&&txx>=0&&tyy<13&&tyy>=0&&tgt[txx][tyy]==0&&map[txx][tyy]<10)q[++wei].x=txx,q[wei].y=tyy,tgt[txx][tyy]=1;}tou++;}bool tgt2[13][13]={};//距离为1的怪物可以打int res=0;for(int i=0;i<19;i++){int tmpx=monster[i].x,tmpy=monster[i].y;for(int j=0;j<4;j++){int txx=tmpx+dx[j],tyy=tmpy+dy[j];if(txx<13&&txx>=0&&tyy<13&&tyy>=0&&tgt[txx][tyy]){res|=(1<<i);break;}}}map[x][y]=tmp;return res;
}
void init()
{clear();for(int i=0;i<524288;i++){if(i==524000)int dfsgfgsd=0;for(int j=0;j<13;j++)for(int k=0;k<13;k++)map1[j][k]=map[j][k];for(int j=0;j<19;j++)if(i&(1<<j))map1[monster[j].x][monster[j].y]=0;//对应状态打过的怪物看作空地bfs(i,12,6);}bfs3(12,6);for(int i=0;i<19;i++){if(i==17)int dfgsdfgf=0;if(enemy2[i]==-2)//不能直接打的怪物enemy2[i]=bfs2(monster[i].x,monster[i].y);//计算对应前驱怪物}
}
int main()
{int tot=0;for(int i=12;i>=0;i--)for(int j=12;j>=0;j--)if(map[i][j]>=19)monster[tot].x=i,monster[tot].y=j,tot++;enemy[0].hp=80,enemy[0].atk=11,enemy[0].dex=3,enemy[0].spj=1;enemy[1].hp=8,enemy[1].atk=28,enemy[1].dex=0,enemy[1].spj=2;enemy[2].hp=96,enemy[2].atk=21,enemy[2].dex=2,enemy[2].spj=3;enemy[3].hp=54,enemy[3].atk=28,enemy[3].dex=1,enemy[3].spj=4;enemy[4].hp=39,enemy[4].atk=50,enemy[4].dex=4,enemy[4].spj=0;enemy[5].hp=60,enemy[5].atk=23,enemy[5].dex=9,enemy[5].spj=0;enemy[6].hp=390,enemy[6].atk=26,enemy[6].dex=5,enemy[6].spj=0;yellowdoor[0].x=4,yellowdoor[0].y=1;yellowdoor[1].x=11,yellowdoor[1].y=5;yellowdoor[2].x=9,yellowdoor[2].y=7;yellowdoor[3].x=4,yellowdoor[3].y=11;bluedoor[0].x=1,bluedoor[0].y=6;bluedoor[1].x=5,bluedoor[1].y=0;bluedoor[2].x=11,bluedoor[2].y=2;for(int i=0;i<13;i++)for(int j=0;j<13;j++){if(map[i][j]==11)//是墙,暴力枚举破掉每一面墙{map[i][j]=0;//变成空地for(int k1=0;k1<3;k1++)for(int k2=k1+1;k2<4;k2++){map[yellowdoor[k1].x][yellowdoor[k1].y]=0;map[yellowdoor[k2].x][yellowdoor[k2].y]=0;for(int k3=0;k3<3;k3++){printf("%d %d %d %d %d\n",i,j,k1,k2,k3);map[bluedoor[k3].x][bluedoor[k3].y]=0;init();//初始化逻辑dynamic();//动态规划FILE* fp=fopen("debug.log","wb");for(int i=0;i<524288;i++)if(allstatus[i])fprintf(fp,"%x %d %d %d %d %d\n",i,atk0[i],dex0[i],mdef[i],extrahp[i],allstatus[i]);int tmp=check();if(tmp>0){out(tmp);printf("\n破墙%d %d 黄门%d %d 蓝门 %d\n",i,j,k1,k2,k3);}//输出,退出程序map[bluedoor[k3].x][bluedoor[k3].y]=13;}map[yellowdoor[k1].x][yellowdoor[k1].y]=12;map[yellowdoor[k2].x][yellowdoor[k2].y]=12;}map[i][j]=11;}}//大约50*6*3*18*2^18约等于3538944000有望通过穷举找到解。
}

女孩子的试炼html5魔塔相关推荐

  1. 女孩子零基础学习web前端开发怎么…

    ·  网页开发工具: 学习web前端开发,网页开发工具有FrontPage,会用 Word 的人很容易学会FrontPage.还有一个常用的是Dreamweaver.这两种都是使用最多的HTML网页制 ...

  2. 做一个有姿态的女孩子

    做一个自律的女孩子 做一个爱自己的女孩子 做一个擅长等待的女孩子 做一个有姿态的女孩子 做一个善良的女孩子 做一个温柔的女孩子 做一个漂亮的女孩子 做一个喜欢运动的女孩子 做一个自控的女孩子 做一个高 ...

  3. 为什么yamlp中没有cplex_女孩子们为什么羡慕童话中的公主?她们并没有那么幸福...

    相信很多人小时候听童话故事,最羡慕的是童话中的公主.白雪公主最终等到了白马王子,从水晶棺中苏醒,从此过上幸福的生活:睡美人沉睡百年,直到王子出现,魔咒自然解除:灰姑娘原本过得凄凄惨惨,却幸运的被王子爱 ...

  4. 学计算机的男孩子怎么追女孩子,男孩子追女孩子的套路,原来有这么多,快来学一学...

    导语 你有没有喜欢的女孩子呢?那有没有跟她表白呢?或者有没有追到手呢?俗话说没吃过猪蹄也见过猪跑啊,追女孩子的套路虽然许多人在用,可是层出不穷的追女孩套路,你真的都了解吗?我们都知道女孩子喜欢男孩子是 ...

  5. 有些事情女孩子越早知道越容易幸福

    有些事情女孩子越早知道越容易幸福 1.如果你的父母并非嫌贫爱富,而以人品为由强力阻止你和某人谈恋爱,千万不要为了要证明他们是错的,就拚尽全力爱起他来,你会发现你吃的苦头远比想像中多,而稍能收成时,岁月 ...

  6. 女孩子应该养成的好习惯

    读女孩子值得拥有的10个好习惯后的笔记和感想 好习惯总结 在条件允许的情况下追求高品质的生活:女孩子,宁可买贵很多的有质量保证.穿着得体.面料舒适的品牌服饰,哪怕只够买一件,也不要贪便宜.. 注重护肤 ...

  7. 如果编程语言是女孩子

    试想一下,当Java.C++.Python.Ruby.PHP.C#.JS等编程语言变成了动漫人物会是怎样的一幅场景呢?下面就一起看看在日本作家渡辺将人的笔下,各种编程语言都是哪类可爱的女孩子的吧! 究 ...

  8. 每个女孩子起床后做的第一件事......

    1 假如你暴富了 (素材来源网络,侵删) ▼ 2 当客服到底有多难? (素材来源网络,侵删) ▼ 3 挺好的 (素材来源网络,侵删) ▼ 4 每个女孩子起床后做的第一件事 (素材来源网络,侵删) ▼ ...

  9. 女孩子狠起来可以多可怕?

    1 让我康康是什么好吃的? ▼ 2 抢答:他们到底能不能走出去? (素材来源网络,侵删) ▼ 3 小朋友的眼睛是雪亮的 (素材来源网络,侵删) ▼ 4 这该死的魅力 ▼ 5 我脚伤了,我装的! (素材 ...

最新文章

  1. 基数估算HyperLogLog
  2. ixf文件 mysql导入,控制 PC/IXF 文件导入数据库的一般规则
  3. 英文连词_连词我们…讨厌
  4. android学习笔记48——SQLite
  5. 4.Java JSON使用
  6. 在混合开发框架模式中,简化客户端对Web API的频繁调用
  7. 深入.NET 青鸟影院系统
  8. java利用复循环洗牌算法_实现不重复取数两种算法(洗牌算法)
  9. 前端学习笔记之——使用边框和背景
  10. MACBOOK快捷键输入
  11. 四川理工计算机专业好不好,急!!!!四川理工 、 宜宾学院 、 内江师范学院 哪个学校计算机专业好点?...
  12. 模块学习2:基于PELCO-D协议对云台进行定点控制
  13. 大学计算机课程ppt,以计算思维为导向的大学计算机基础课
  14. android手机 无电池开机画面,安卓手机无法开机的6种解决方法
  15. better—scrolls解决下拉刷新,上拉加载更多时出现只执行一次的问题
  16. 海蜘蛛路由免费版也可以看流量
  17. 假货防不胜防?LV母公司将推区块链防伪平台
  18. 计算机义诊暑期社会实践报告,暑期社会实践 | 免费技术进社区,电脑义诊帮您忙...
  19. 硬件学习笔记(器件篇)—— 二极管(一)
  20. 永磁同步风力发电机并网逆变器设计 风机并网:发电机采用PMSG,变换器采用:双PWM变流器

热门文章

  1. HTML超好看樱花飘落404页面源码+带时间
  2. Excel收纳箱:如何通过VBA获得包含数据的最大行
  3. 解决 “计算机中丢失gdiplus.dll”
  4. 继Facebook之后,微软正式宣布:全面进军「元宇宙」
  5. AutoCAD2024最新版介绍及安装下载
  6. [leetcode Q50] Pow(x, n)
  7. CSAPP buflab 实验报告
  8. 微信小程序消息订阅超详细流程步骤
  9. 头歌:打印直角三角形
  10. dht11 python mysql,通过python脚本将arduino传感器数据发送到mysql数据库时出现问题