zoukankan      html  css  js  c++  java
  • 【leetcode】自由之路

    typedef struct st{
        int pst;
        int* arr;
    }st;
    #define min(a,b) (a)<(b)?(a):(b)
    
    int findRotateSteps(char * ring, char * key){
        int i,j,k,minStep=100000,val;
        int keylen=strlen(key), ringlen=strlen(ring);
        st ans[128]={0};
        int* step=(int*)calloc(ringlen,sizeof(int));
        for (i=0; i<ringlen; i++)
        {
            if (strchr(key,ring[i]))
            {
                if (ans[ring[i]].pst == 0)
                    ans[ring[i]].arr=(int*)calloc(ringlen,sizeof(int));
                ans[ring[i]].arr[(ans[ring[i]].pst)++]=i;
            }
        }
        for (i=keylen-2; i>=0; i--)
        {
            int* temp=(int*)calloc(ans[key[i]].pst,sizeof(int));
            memset(temp,0x7f, ans[key[i]].pst*sizeof(int));
            for (j=0; j<ans[key[i]].pst; j++)
            {
                for (k=0; k<ans[key[i+1]].pst; k++)
                {
                    val=min(abs(ans[key[i+1]].arr[k] - ans[key[i]].arr[j]),ringlen-abs(ans[key[i+1]].arr[k] - ans[key[i]].arr[j]));
                    if (val+step[k] < temp[j])
                        temp[j]=val+step[k];
                }
            }
            step=temp;
        }
        for (k=0; k<ans[key[0]].pst; k++)
        {
            val=min(ans[key[0]].arr[k],ringlen-ans[key[0]].arr[k]);
            if (val+step[k] < minStep)
                minStep=val+step[k];
        }
        return minStep+keylen;
    }
  • 相关阅读:
    如何用代码设置图层在特定比例尺下显示
    typeof
    gauss
    is
    SelectByShape
    layer,featureclass,etc(OGR,原来是讲OGR的,不是ESRI的产品的)
    featurecursor
    rubberband
    渐变弹出层
    [置顶] 任务二 基本的数据库操作
  • 原文地址:https://www.cnblogs.com/ganxiang/p/13960857.html
Copyright © 2011-2022 走看看