zoukankan      html  css  js  c++  java
  • 一道水的不能再水的中国盒子问题——小试牛刀(3)

          话说中国盒子问题在蒟蒻的程序界留名已久,但是在百度上竟然找不到这种水题甚至是介绍[笑][呵呵][笑][呵呵][笑][呵呵][笑][呵呵][笑][呵呵]。

    身为一个蒟蒻,我专门把这个程序又搞了一遍,顺便看了看水题的背景。

    先上题目= -

    一看就很水对不对= -

    第一秒反应搜索,还是暴力解法,毕竟目标一定,格子如此的小,数据量不会太大,于是= -直接代码(主要是因为我懒得打字),蒟蒻的水题大家一起体会。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int i,j,k,l,n,m,p,h,t,f,x;
    int b[10001];
    string s1,s2,list,a[1001];
    void del(string c)
    {
        c=""; 
    }
    int main()
    {
        cin>>s1;
        s2="AAAA00BBBB";
        if(s1==s2) 
        {
            cout<<"0"<<endl;
            return 0;
        }
        a[1]=s1;
        string sc="00";
        f=1;h=0;
        do
        {
            h++;
            for(i=1;i<=9;i++)
            {
                if(a[h][i]!='0'&&a[h][i+1]!='0')
                {
                    x=0;
                    n=a[h].find(sc,0);
                    m=0;f=f+1;
                         a[f]=a[h];
                         a[f][n]=a[f][i];
                         a[f][n+1]=a[f][i+1];
                         a[f][i]='0';
                         a[f][i+1]='0';
                         for(j=1;j<=f-1;j++) 
                          if (a[f]==a[j])
                           {
                        m=9;
                        f=f-1;
                        del(a[f+1]);
                        break;
                           }   
                     if(m!=9) b[f]=b[h]+1;
        }
                    if(a[f]==s2) 
        { 
                    cout<<b[f];
                    return 0;
        }
        }
        }while(h!=f);
     } 

    del是个清空函数,将中间的状态string清掉。由于目标状态一定,所以我们只需要把它当字符串输进去即可。

    由于怎么一动都是两个00在一起,所以00这个东西就可以直接查找位置。

    n=a[h].find(sc,0);这句话就是用来查找‘0’的位置。
    因为用的是string所以直接用函数就好了= - =不是我懒。。。。

    数组开了个string数组= =懒于重复收拾一个空间了,空间换时间就挺不错的。
    当然,数据开的小了点= =大点也是无所谓的。。
    
    

    蒟蒻的一道题就这么水完了,不过这道题对于搜索这个算法来说还是有不小的引导作用。

    水的一笔= -= 蒟蒻去做题了同志们再见。

  • 相关阅读:
    selenium入门:基于界面的自动化测试
    selenium入门:环境搭建
    Python入门:迭代器
    Python入门:生成器并行(协程)
    Python入门:生成器应用-斐波拉契数列
    Python入门:生成器定义
    Python入门:装饰器案例3
    Python入门:装饰器案例2
    Python入门:装饰器案例1
    Spring MVC 上传文件---依赖引用
  • 原文地址:https://www.cnblogs.com/qianyintinghan/p/5342601.html
Copyright © 2011-2022 走看看