当前位置:首页>>攻略文章>>正文
645装等悬槌任务7随从解法的所有组合
2014-12-23 20:02:38 作者:yyqian87 来源:NGA 浏览次数:0
摘要:645ilvl悬槌任务7随从解法的所有组合(补充了不含酒仙的8随从组合)。
之前有帖子给出7个随从搞定所有悬槌任务了,LZ闲来无事,写了个程序想探究总共有多少种组合能解决这个问题,结论是4种 如果给9种技能按如下编号:
0 限时战斗
1 强力法术
2 重击
3 群体伤害
4 爪牙围攻
5 危险区域
6 致命爪牙
7 魔法减益
8 野生怪物入侵
 
那么,4个悬槌任务分别需要的技能组合为:
012568
334578
002467
015668
 
对应地,可以用程序暴力穷举所有技能组合,得出以下4种随从组合可以匹配以上4个任务:
(1)20 60 74 51 53 83 86
(2)20 60 74 61 43 73 85
(3)20 60 74 61 53 83 85
(4)20 60 74 81 53 83 65
翻译成技能就是:
(1)重击+限时战斗,致命爪牙+限时战斗,魔法减益+爪牙围攻,危险区域+强力法术,危险区域+群体伤害,野生怪物入侵+群体伤害,野生怪物入侵+致命爪牙
(2)重击+限时战斗,致命爪牙+限时战斗,魔法减益+爪牙围攻,致命爪牙+强力法术,爪牙围攻+群体伤害,魔法减益+群体伤害,野生怪物入侵+危险区域
(3)重击+限时战斗,致命爪牙+限时战斗,魔法减益+爪牙围攻,致命爪牙+强力法术,危险区域+群体伤害,野生怪物入侵+群体伤害,野生怪物入侵+危险区域
(4)重击+限时战斗,致命爪牙+限时战斗,魔法减益+爪牙围攻,野生怪物入侵+强力法术,危险区域+群体伤害,野生怪物入侵+群体伤害,致命爪牙+危险区域
 
可以看出,“重击+限时战斗, 致命爪牙+限时战斗, 魔法减益+爪牙围攻”这三种技能组合是必须的,其他四种可以有变化。
 
-------------------------分割线----------------------------------------------
 
大家觉得酒仙的”野生怪物入侵+群体伤害“比较难召,所以这里再给出个排除了酒仙,队伍扩大到8个随从的组合(已经剔除了包含上面(2)组合的任意8人组),这样可能会比较容易达成:
(5) 20 40 60 61 72 43 73 85
(6) 20 60 70 61 42 43 73 85
(7) 20 60 70 61 43 73 64 85
(8) 20 60 51 43 53 74 86 87
(9) 20 60 51 43 73 74 85 86
(10) 20 60 51 53 73 74 84 86
(11) 20 60 61 43 53 74 85 87
(12) 20 60 61 53 73 74 84 85
(13) 20 60 81 43 53 74 65 87
(14) 20 60 81 53 73 74 84 65
(15) 40 60 21 61 72 43 73 85
(16) 60 70 21 61 42 43 73 85
 
-------------------------分割线----------------------------------------------
附上C++代码,如果有人感兴趣在此基础上修改的话:
程序大体思路是用一串二进制数来保存各种技能的组合叠加:1个技能用3位来保存该技能的个数,9个技能需要27位,譬如说,0b001010000表示三个技能分别的个数为001,010,000,即1个,2个,0个。然后通过各种按位的操作来计算比较。
这个暴力解法的运算时间会随随从数增多成指数上升,7个随从运算时间大概在1分钟以内,如果要改更多随从数来解决其他任务组合问题,计算量会很大。
Code (c):
#include <iostream> 
#include <string> 
using namespace std; 
typedef unsigned long ulong; 
void add_multi_talents(ulong &, string); 
bool compare(ulong team, ulong task); 
int main() 

    ulong talents[9] = {0}; 
    ulong tasks[100] = {0}; 
     
    for(int i = 0; i != 9; ++i) 
    { 
        talents[i] = (1 << (i * 3)); 
    } 
 
    ulong combo[37] = {0}; 
    int dict[37] = {0}; 
    int N_combo = 37; 
    int k = 0; 
    for(int i = 0; i < 9; ++i) 
    { 
        for(int j = i + 1; j < 9; ++j) 
        { 
            combo[k] = talents[i] + talents[j]; 
            dict[k] = j * 10 + i; 
            ++k; 
        } 
    } 
    combo[k] = talents[0] + talents[0]; 
    dict[k] = 0; 
 
    add_multi_talents(tasks[0], "012568"); 
    add_multi_talents(tasks[1], "334578"); 
    add_multi_talents(tasks[2], "002467"); 
    add_multi_talents(tasks[3], "015668"); 
 
    ulong team; 
    int x[100] = {0}; 
    int N_f = 7; 
    for(x[0] = 0; x[0] < N_combo; ++(x[0])){ 
    for(x[1] = x[0]; x[1] < N_combo; ++(x[1])){ 
    for(x[2] = x[1]; x[2] < N_combo; ++(x[2])){ 
    for(x[3] = x[2]; x[3] < N_combo; ++(x[3])){ 
    for(x[4] = x[3]; x[4] < N_combo; ++(x[4])){ 
    for(x[5] = x[4]; x[5] < N_combo; ++(x[5])){ 
    for(x[6] = x[5]; x[6] < N_combo; ++(x[6])){ 
    bool t0 = false; 
    bool t1 = false; 
    bool t2 = false; 
    bool t3 = false; 
    for(int i = 0; i != N_f; ++i){ 
    for(int j = i + 1; j != N_f; ++j){ 
    for(int k = j + 1; k != N_f; ++k){ 
        team = combo[x[i]] + combo[x[j]] + combo[x[k]]; 
        if (compare(team, tasks[0])) t0 = true; 
        if (compare(team, tasks[1])) t1 = true; 
        if (compare(team, tasks[2])) t2 = true; 
        if (compare(team, tasks[3])) t3 = true; 
    }}} 
    if (t0 && t1 && t2 && t3) 
    { 
        cout << dict[x[0]] << " "; 
        cout << dict[x[1]] << " "; 
        cout << dict[x[2]] << " "; 
        cout << dict[x[3]] << " "; 
        cout << dict[x[4]] << " "; 
        cout << dict[x[5]] << " "; 
        cout << dict[x[6]] << endl; 
    } 
    }}}}}}} 
 
    return 0; 

 
void add_multi_talents(ulong &task, string str) 

    int size = str.size(); 
    int n; 
    ulong talent; 
    for(int i = 0; i != size; ++i) 
    { 
        n = (int)(str[i]-'0'); 
        talent = 1 << (n * 3); 
        task = task + talent; 
    } 

 
bool compare(ulong team, ulong task) 

    ulong mask = 7; 
    for(int i = 0; i != 9; ++i) 
    { 
        if ((task & mask) > (team & mask)) 
            return false; 
        mask = mask << 3; 
    } 
    return true; 
}


相关报道:

[关闭] [返回顶部]


  返回首页 | 最新资讯 | 资源下载 | 魔兽图片 | 单机文档 | 技术攻略 | 玩家视频
备案号:蜀ICP备2024062380号-1
免责声明:本网站为热爱怀旧WOW的玩家们建立的魔兽世界资料网站,仅供交流和学习使用,非盈利和商用.如有侵权之处,请联系我们,我们会在24小时内确认删除侵权内容,谢谢合作。
Copyright © 2024 - 2024 WOWAII.COM Corporation, All Rights Reserved

机器人国度