zoukankan      html  css  js  c++  java
  • 最长公共子序列暴力解法

    最长公共子序列是利用动态规划来解决的,今天看书说到了暴力解法,觉得很简单就随手实现了下,确实很简单,但是却犯了个C语言中常见的小错误运算符的优先级问题,本来在判断j &i的值时不用加!=0这样的判断,我也是多此一举,反而引入了错误,&的优先级比起!=要低所以运行不正确,从这里也可以看出在C陷阱和缺陷中指出的问题虽然很浅显但是确实是经常犯的错误。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdbool.h>
    #define    MAX     32
    
    bool  is_a_sub(const char* str, const char* s_str) {
        while (*str != '' && *s_str != '') {
            if (*str == *s_str) {
                ++s_str;
            }
            ++str;
        }
        return *s_str == '' ? true : false;
    }
    
    void  public_sub_str(const char* str, const char* o_str) {
        int str_len = strlen(str);
        int pow_value = 1 << str_len;
        int i = 1;
        char sub_str[MAX] = "";
    
        for (; i < pow_value; ++i) {
            int j = pow_value;
            int k = 0;
            int m = 0;
            char temp[MAX] = "";
            
            for (; j > 0; j >>= 1) {
                if ((j & i) != 0) {
                    temp[k++] = str[m];
                }
                ++m;
            }
            temp[k] = '';
    
            if (is_a_sub(o_str, temp)) {
                if (strlen(temp) > strlen(sub_str)) {
                    strcpy(sub_str, temp);
                }
            }
        }
    
        fprintf(stderr, "%s
    ", sub_str);
    }
    
    int main(void) {
        const char*  str = "INTHEBEGINNING";
        const char*  o_str = "ALLTHINGSARELOST";
        public_sub_str(str, o_str);
        return  0;
    }
  • 相关阅读:
    javaScirpt学习之事件
    验证表单内容之后如何阻止表单提交
    利用js制作异步验证ajax方法()
    Ajax制作无刷新评论系统
    ajax查询数据的举例
    以Ajax的方式访问数据库
    jquery中的全局事件
    jquery序列化元素
    jquery中的ajax
    jquery与ajax的应用
  • 原文地址:https://www.cnblogs.com/coder-zhang/p/3788367.html
Copyright © 2011-2022 走看看