zoukankan      html  css  js  c++  java
  • UVa10651(记忆化搜索)

    题意:

    给一串-和o组成的字符串,你可以把“-oo"变成”o--",可以把“oo-”变成“--o",问最后最少有多少个o.


    状态压缩 ,记忆化搜索

    code:

    #include <stdio.h>
    #include <string.h>
    #define len 12
    #define min(a,b) (((a)<(b)) ?(a):(b))
    int d[1<<13];
    int dp(int n)
    {
        int i, t;
        if(d[n]!=-1) return d[n];
        d[n] = 0;
        for(i=0; i<len; i++)
            if(n&(1<<i))
                d[n]++;
        for(i=0; i<len-2; i++)
        {
            t = n;
            if( (t&(1<<i)) && (t&(1<<(i+1))) && !(t&(1<<(i+2))) )
            {
                t &=~(1<<i);
                t &=~(1<<(i+1));
                t |=1<<(i+2);
                d[n] = min(d[n],dp(t));
            }
            if( !(t&(1<<i)) && (t&(1<<(i+1))) && (t&(1<<(i+2))) )
            {
                t &=~(1<<(i+1));
                t &=~(1<<(i+2));
                t |=1<<i;
                d[n] = min(d[n],dp(t));
            }
        }
        return d[n];
    }
    int main()
    {
        int T, i, n;
        char str[20];
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",str);
            n = 0;
            for(i=0; i<len; i++)
                if(str[i]=='o')
                    n ^=1<<i;
            memset(d,-1,sizeof(d));
            printf("%d
    ", dp(n));
        }
        return 0;
    }
    



  • 相关阅读:
    汇编指令lodsb和stosb、lodsd和stosd
    编码查询
    CLD汇编指令
    Win32编程
    MessageBox
    windows 数据类型
    STL总结
    解析结构化异常处理(SEH)(第二部分)
    FS[XX]
    ShellCode入门(提取ShellCode)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3217928.html
Copyright © 2011-2022 走看看