广告
三国杀吧 关注:3,156,744贴子:79,104,644
先开一贴 楼主去吃饭 人多回来就更


回复
1楼2020-07-28 17:47
    gkd,拼图搞快点


    回复
    来自Android客户端2楼2020-07-28 17:51
      gkd


      回复
      来自Android客户端3楼2020-07-28 18:08
        来了来了


        收起回复
        4楼2020-07-28 18:20
          gkd莫辜负


          回复
          来自Android客户端5楼2020-07-28 18:21


            收起回复
            来自Android客户端6楼2020-07-28 18:21
              首先要说明一下 每个人的图是不一定相同的 所以想要冲榜最好的计划是先攒次数 然后洗初始图 直到某一次要用的最少步数不多 这个时候就可以考虑考虑下手了


              收起回复
              7楼2020-07-28 18:21

                比如楼主的这一张 按照上面的标号就是
                3 5 1

                0 7 2
                4 6 8


                收起回复
                9楼2020-07-28 18:24
                  然后打开这个网页https://c.runoob.com/compile/11
                  在线工具那一栏选C在线工具
                  下面两大块中 删掉左边一块中的文字
                  粘贴上一段代码(楼下会贴)
                  然后在“点击运行”的右边按照上面所标的序列输入(比如楼主的图就输入3 5 1 0 7 2 4 6 8 注意数字与数字之间要有空格)
                  最后点击“点击运行” 右边会弹出两行 第一行是最小步数
                  第二行是空白块每一次移动至何处(也就是移动的方式)


                  回复
                  10楼2020-07-28 18:27
                    #include<stdio.h>
                    #include<stdlib.h>
                    int i,j,a[10][10],x,y,step=0,dx[4]={-1,0,1,0},dy[4]={0,-1,0,1},min=50,b[100],c[100];
                    int check()
                    {
                    int i,j;
                    for(i=1;i<=3;i++)for(j=1;j<=3;j++)if(i==3&&j==3)return 1;else if(a[i][j]!=3*i+j-3)return 0;
                    }
                    void dfs(int x,int y)
                    {
                    int ii,xx,yy;
                    if(step>=min)return;
                    if(check()==1){min=step;for(ii=0;ii<=step;ii++)c[ii]=b[ii];return;}
                    for(ii=0;ii<4;ii++)
                    {
                    xx=x+dx[ii];yy=y+dy[ii];
                    if(xx>=1&&xx<=3&&yy<=3&&yy>=1&&((step==0)||(3*xx+yy-3!=b[step-1])))
                    {
                    a[x][y]=a[xx][yy];
                    a[xx][yy]=0;
                    step++;b[step]=3*xx+yy-3;
                    dfs(xx,yy);
                    step--;
                    a[xx][yy]=a[x][y];
                    a[x][y]=0;
                    }
                    }
                    }
                    int main(){
                    for(i=1;i<=3;i++)for(j=1;j<=3;j++)scanf("%d",&a[i][j]);
                    for(i=1;i<=3;i++)for(j=1;j<=3;j++)if(a[i][j]==0){x=i;y=j;}
                    b[0]=3*x+y-3;dfs(x,y);
                    printf("%d\n",min);
                    for(i=0;i<=min;i++)printf("%d ",c[i]);
                    return 0;
                    }


                    收起回复
                    11楼2020-07-28 18:28
                      好啦更完了如果遇到什么问题欢迎在楼里留言 楼主会回答的


                      收起回复
                      12楼2020-07-28 18:29
                        顶顶 没人么


                        收起回复
                        13楼2020-07-28 18:37
                          感谢楼主,正在试着拼图


                          收起回复
                          14楼2020-07-28 18:40
                            1


                            回复
                            来自Android客户端15楼2020-07-28 18:42
                              换了几次没找到步数特别低的


                              收起回复
                              来自Android客户端16楼2020-07-28 19:01