问请问dota龙骑士用什么装备好?狂战好吗?
dota龙骑士
-
辣妈?哆哆
这个道理和编程无关,每人最多取4根,
1+4=5
21=5*4+1
也就是说,只要保证每轮两方之和是5,那么4轮后取走20根,最后先取的人必定取最后一根。第二题:需要用递推的方式,计算所有必胜必输的状态,然后保证每次取火柴都让对方到达必输状态。所谓必输就是只剩最后一根,或者无论怎么取后的结果都是必胜。所谓必胜,就是可以对方到达必输状态的情况。程序如下:
import j**a.io.*;public class picker {
火柴堆的输赢状况
private final static int empty=0;这种排列不可能出现,如108
private final static int unknown=1;尚未计算出
private final static int win=2;必胜
private final static int lose=3;必输(如果对方够聪明)
用数组,保存每种火柴堆排列的输赢状态,下标为排列,如357,111,001,100等等
private int[]status;public picker(){
初始化状态数组,排除所有不可能出现的情况
status=new int[358];0-357
int i,j,k;for(i=0;i;i+){
for(j=0;j;j+){
for(k=0;k;k+){
status[i*100+j*10+k]=unknown;}
}
}
已知 100,010,001必输
status[1]=lose;status[10]=lose;status[100]=lose;所有能使对方到达上述三个状态的排列都是必赢的
markwin(1);markwin(10);markwin(100);递推计算,直至357的情况被计算出来
while(status[357]=unknown){
找到第一个没有计算的
int node=2;for(node=2;node;node+){
if(status[node]=unknown)break;}
它的所有下个状态肯定都是必赢,不然以前就能算出。status[node]=lose;所有能使对方到达这个状态的排列都是必赢的
markwin(node);}
}
所有能使下个状态变必输的排列都是必赢的
private void markwin(int node){
假设node为必输
每堆的数量分别为i,j,k
int i=node/100;int j=node/10%10;int k=node%10;先是第一堆,可能为i+1,i+2,.,3
for(int i1=i+1;i1;i1+){
status[i1*100+j*10+k]=win;}
第二堆
for(int j1=j+1;j1;j1+){
status[i*100+j1*10+k]=win;}
第三堆
for(int k1=k+1;k1;k1+){
status[i*100+j*10+k1]=win;}
}
查找所有可能的一次取火柴后的排列,找出其中必输的状态,把这个作为自己的走法
public int getwinpick(int node){
每堆的数量分别为i,j,k
int i=node/100;int j=node/10%10;int k=node%10;先是第一堆,可能留下0,1,.,i-1
for(int i1=0;i1;i1+){
if(status[i1*100+j*10+k]=lose)return i1*100+j*10+k;}
第二堆
for(int j1=0;j1;j1+){
if(status[i*100+j1*10+k]=lose)return i*100+j1*10+k;}
第三堆
for(int k1=0;k1;k1+){
if(status[i*100+j*10+k1]=lose)return i*100+j*10+k1;}
没有找到,那么先顽强抵抗一下,只取一根
if(i>0)return(i-1)*100+j*10+k;else if(j>0)return(j-1)*10+k;else return k-1;}
public static void main(string[]args)throws exception {
picker picker=new picker();一开始的排列是357
int node=357;bufferedreader stdin=new bufferedreader(new inputstreamreader(system.in));while(node>0){
计算机先
system.out.print("now **"+node);node=picker.getwinpick(node);system.out.println(",i pick to"+node);if(node=0){
system.out.println("i lose");return;}
对方再取
system.out.println("now ** your turn:");string input=stdin.readline();int node1=0;try {
node1=integer.parseint(input);} catch(exception e){
system.out.println("invalid input,you lose");break;}
这里没有判断取的是否合法,即node和node1之间是否仅差一位数字
if(node1=0){
system.out.println("you lose");}
node=node1;}
}
}
这个程序只是例子,是说明算法,没有判断输入的合法性,所以不能一直输入2的,人嘛,自己也遵循一下游戏规则吧。另外,稍做改动,如果不利,计算机不会马上认输了。
-
问 龙骑士出什么装备好
提问时间:2024-05-13 02:57:38
答 龙骑士的装备主要看他在团队中的定位,他的定位主要看阵容组合如果队伍里只有你能做肉,那就挑战+心做肉吧,然后考虑强袭如果队伍里已经有人马,潮汐这种**了,你就去做...
-
问 dnf狂战士用什么武器好??
提问时间:2024-05-13 20:44:27
答 狂战士这个职业是固伤职业,所以武器选择并没有什么难题…无影是最好,平民的话推荐屠戮(只需每周双休是刷领主塔即可获得)ps:狂战是固伤职业武器很随意太刀,巨剑,钝...
-
问 60级狂战士带什么装备好
提问时间:2024-05-13 15:46:16
答 防具,买血之结界吧。4.5百w。现在降价了。65新出的苍狼.武器带60的带百分2的出血的那把,很便宜,我那时候买的200多w,现在几十w,65的刀也不怎么贵,要...
-
问 55级狂战士用什么武器最好?用什么装备最好?用什么首饰最好?
提问时间:2024-05-13 21:18:54
答 魔剑是老板买的。(武器最好是冲到60级搞远古2武器,太拉的攻击)。远古或传承装备,首饰悲鸣戒子,项链,泰拉手镯
-
问 龙之谷狂战士穿什么装备好呢?
提问时间:2024-05-13 05:27:22
答 我觉得各有千秋,旧版的攻是高,但是没有前缀属性,可别小看这前缀,比如主副武器做天启破坏的攻击看上去是低了些,但是它的暴击率相当高其实下来是一样的。我比较喜欢暴击...
-
问 玩dota龙骑士应该出什么装备?
提问时间:2024-05-13 17:37:23
答 前期魂戒混线,打钱出小件,分别是假腿,支配,先锋盾(建议按此顺序出)中期大件:对剑,强袭,撒旦不建议出bkb,龙骑本来就是个肉型的dps,而不是纯输出,所以为团...
-
问 《英雄联盟》狂战士出什么装备最好用?
提问时间:2024-05-13 23:25:45
答 冰锤,兰兆,春哥,皇冠,玛莫提乌斯之嗜或阿塔玛,狂徒,**玩发,开鬼步,皇冠冲进去开大,开兰兆,追着adc打,**之后任务完成
-
问 冒险岛狂龙战士好吗
提问时间:2024-05-13 12:47:11
答 狂龙战士是冒险岛排行中等的职业。狂龙优缺点狂龙战士优缺点很明显:优点:攻速快,变身后可以达到满攻速。攻击段数在冒险岛排名靠前。缺点:攻击技能伤害低。狂龙特色狂龙...