王者荣耀头像框怎么改

王者荣耀头像

回答
  • 小狐狸Diane 小狐狸Diane

    你给的这个例子貌似无解,下面是用a*算法写的八数码程序代码,当然也可以用广搜来做
    a*算法求解八数码问题
    估价函数选择不在位数与当前结点深度之和
    123456780->271853406(step=17)约52s
    include
    include
    using namespace std;typedef struct node
    {
    char data[9];int depth,not_in_pos;node*father,*pre,*next;}tstat;int step=0;统计总共走了多少步
    tstat*get_eva_function(tstat*start)/返回估价函数最小的结点
    {
    tstat*i,*p;int min,eva;i=p=start;min=eva=i->not_in_pos+i->depth;for;i;i=i->next)
    {
    eva=i->not_in_pos+i->depth;if(min>eva)
    {
    min=eva;p=i;}
    }
    return(p);}
    tstat*create_data()/创建数据
    {
    tstat*st=new tstat;string s;int i,j,slen=0;bool b;cin>>s;while(s[slen])slen+;if(slen!9)
    {
    cout输入错误!return(**);}
    for(i=0;i;i+)
    {
    st->data[i]=s[i];b=true;for(j=0;j;j+)
    if(st->data[i]=st->data[j])
    {
    b=false;break;}
    if!(st->data[i]>='0'&st->data[i])|!b))
    {
    cout输入错误!return(**);}
    }
    st->depth=0;st->father=st->pre=st->next=**;return(st);}
    bool cansolve(tstat*st,tstat*ta)/判断是否有解,根据逆序数奇偶性相同否判断
    {
    int i,j,num_st=0,num_ta=0;for(i=0;i;i+)
    for(j=0;j;j+)
    {
    if(st->data[j]<st->data[i]&st->data[j]!'0')
    num_st+;if(ta->data[j]<ta->data[i]&ta->data[j]!'0')
    num_ta+;}
    num_st=num_st-(num_st/2)*2;num_ta=num_ta-(num_ta/2)*2;if((num_st=0&num_ta=0)|(num_st=1&num_ta=1))
    return(true);else
    {
    cout无解!return(false);}
    }
    void print_stat(tstat*st)/格式化输出状态结点中数据
    {
    int i,j;for(i=0;i;i+)
    {
    for(j=0;j;j+)
    cout<<st->data[i*3+j];cout;}
    }
    void print_data(tstat*st)/输出函数
    {
    if(st)
    {
    print_data(st->father);cout;cout;print_stat(st);cout;}
    }
    bool **same(tstat*st1,tstat*st2)/判断st1和st2是否相同
    {
    int i;bool b=true;for(i=0;i;i+)
    if(st1->data[i]!st2->data[i])
    {
    b=false;break;}
    return(b);}
    bool **ok(tstat*st,tstat*pos)/判断st是否出现过
    {
    tstat*p;bool b=true;for(p=pos;p;p=p->father)
    if(st->data=p->data)
    {
    b=false;break;}
    return(b);}
    int find0(tstat*st)/返回0所在位置
    {
    int i,pos;for(i=0;i;i+)
    if(st->data[i]='0')
    {
    pos=i;break;}
    return(pos);}
    int get_nip(tstat*st,tstat*ta)/计算not_in_pos值
    {
    int i,nip=0;for(i=0;i;i+)
    if(st->data[i]!ta->data[i])
    nip+;return(nip);}
    tstat*calc_path(tstat*start,tstat*target)/寻找路径,返回找到后的目标结点
    {
    tstat*p,*q,*r,*st=start;int zpos,i;char tch;p=st;while((p)&!**same(p,target)))
    {
    r=p->pre;zpos=find0(p);if(zpos!0&zpos!3&zpos!6)/左移
    {
    if!(q=new tstat))
    {
    cout内存分配失败!\n;return(**);}
    for(i=0;i;i+)q->data[i]=p->data[i];tch=q->data[zpos];q->data[zpos]=q->data[zpos-1];q->data[zpos-1]=tch;q->depth=p->depth+1;q->father=p;q->pre=r;q->next=**;q->not_in_pos=get_nip(q,target);if(**ok(q,p))
    {
    if(r)
    r->next=q;else
    st=q;r=q;}
    else
    delete q;}
    if(zpos!2&zpos!5&zpos!8)/右移
    {
    if!(q=new tstat))
    {
    cout内存分配失败!\n;return(**);}
    for(i=0;i;i+)q->data[i]=p->data[i];tch=q->data[zpos];q->data[zpos]=q->data[zpos+1];q->data[zpos+1]=tch;q->depth=p->depth+1;q->father=p;q->pre=r;q->next=**;q->not_in_pos=get_nip(q,target);if(**ok(q,p))
    {
    if(r)
    r->next=q;else
    st=q;r=q;}
    else
    delete q;}
    if(zpos!0&zpos!1&zpos!2)/上移
    {
    if!(q=new tstat))
    {
    cout内存分配失败!\n;return(**);}
    for(i=0;i;i+)q->data[i]=p->data[i];tch=q->data[zpos];q->data[zpos]=q->data[zpos-3];q->data[zpos-3]=tch;q->depth=p->depth+1;q->father=p;q->pre=r;q->next=**;q->not_in_pos=get_nip(q,target);if(**ok(q,p))
    {
    if(r)
    r->next=q;else
    st=q;r=q;}
    else
    delete q;}
    if(zpos!6&zpos!7&zpos!8)/下移
    {
    if!(q=new tstat))
    {
    cout内存分配失败!\n;return(**);}
    for(i=0;i;i+)q->data[i]=p->data[i];tch=q->data[zpos];q->data[zpos]=q->data[zpos+3];q->data[zpos+3]=tch;q->depth=p->depth+1;q->father=p;q->pre=r;q->next=**;q->not_in_pos=get_nip(q,target);if(**ok(q,p))
    {
    if(r)
    r->next=q;else
    st=q;r=q;}
    else
    delete q;}
    r->next=p->next;if(p->next)
    p->next->pre=r;p->pre=p->next=**;p=get_eva_function(st);}
    return(p);}
    int main()/主函数
    {
    tstat*start,*target,*p;cout请输入初始状态(0~8,0为空):";if(start=create_data())
    {
    cout请输入目标状态(0~8,0为空):";if(target=create_data())
    {
    if(cansolve(start,target))
    {
    if(p=calc_path(start,target))
    print_data(p);}
    }
    }
    return(0);} 展开

类似问答
  • 王者荣耀怎么改头像框

    提问时间:2024-05-18 00:16:55

    王者荣耀怎么改头像框 王者荣耀爱心熊猫头像框获取方法:这个头像框的造型还没放出来,正式服显示的也是“?”,不过可以从名字来猜测头像框的获取方法:猜测一、头像框兑...

  • 王者荣耀怎么换头像框

    提问时间:2024-05-18 11:17:54

    王者荣耀怎么换头像框 乱世王者头像框怎么得?通过一些指定活动玩家可以获得玉玺,使用玉玺可以用来兑换乱世王者头像框。1.8月16日~8月21日用指定英雄参加5V5...

  • 王者荣耀改头像

    提问时间:2024-05-18 05:32:50

    王者荣耀改头像 王者荣耀是一款风靡全球的MOBA游戏,众多玩家都希望能够在游戏中展现自己的个性和风格。而更换头像就是展示个性的重要方式之一。在本文中,将为大家介...

  • 王者荣耀的头像框

    提问时间:2024-05-18 04:34:37

    王者荣耀的头像框 乱世王者头像框怎么得?通过一些指定活动玩家可以获得玉玺,使用玉玺可以用来兑换乱世王者头像框。1.8月16日~8月21日用指定英雄参加5V5匹配...

  • 王者荣耀上框头像怎么弄

    提问时间:2024-05-18 21:33:04

    王者荣耀上框头像怎么弄 王者荣耀是一款非常受欢迎的多人在线战斗游戏,游戏中的头像是玩家展示自己形象和个性的重要方式之一。在游戏中,如何上框头像呢?下面就为大家详...

  • 怎么换王者荣耀框框头像

    提问时间:2024-05-18 00:52:36

    怎么换王者荣耀框框头像 想要换王者荣耀框框头像,首先需要了解王者荣耀头像的种类和获取方式。在王者荣耀游戏中,头像主要分为两种类型:英雄头像和框框头像。英雄头像是...

  • 头像框王者荣耀怎么关闭

    提问时间:2024-05-18 23:45:22

    头像框王者荣耀怎么关闭 王者荣耀是一款非常受欢迎的***,其玩家数量已经超过了5亿。在游戏中,有一种称为“头像框”的功能,它可以让玩家自定义自己的头像,使其更加...

  • 王者荣耀怎么熬出头像框

    提问时间:2024-05-18 09:41:02

    王者荣耀怎么熬出头像框 熬出头像框需要一定的时间和技巧,下面给大家介绍一些王者荣耀熬出头像框的方法:1.参与活动获取头像框王者荣耀每年都会推出各种活动,比如节日...

  • 王者荣耀怎么弄的头像框

    提问时间:2024-05-18 18:54:20

    王者荣耀怎么弄的头像框 王者荣耀是一款非常受欢迎的MOBA游戏,它不仅拥有丰富的英雄选择和各种玩法,还有很多有趣的活动和特色功能。其中,头像框就是一项非常受欢迎...

  • 王者荣耀里怎么弄头像框

    提问时间:2024-05-18 06:25:08

    王者荣耀里怎么弄头像框 王者荣耀是一款广受欢迎的多人在线游戏。在游戏中,你可以使用头像框来显示你的个性和风格。玩家可以通过购买和获得游戏中的头像框来装饰自己的头...

精品推荐

友情链接

友链互换QQ:

谷财 备案编号:蜀ICP备11019336号-3商务合作:235-677-2621

Copyright 2009-2020 Chengdu Sanzilewan Technology Co.,Ltd all rights reserve

抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活