• 学习笔记-动态规划-poj1050-修改中


    //
    //  main.c
    //  poj1050
    //
    //  Created by 韩雪滢 on 10/13/16.
    //  Copyright © 2016 韩雪滢. All rights reserved.
    //
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXLEN 10000
    
    /* poj1050 失败的小demo
     *其中包括
     *读取一行字符串直到换行符
     *将字符串按照空格拆分,将拆分的char[] 专为 int,正负整数
     *用了一丢丢动态规划去求最大的值
     ***********************
     *未实现的是  题目要求These are the N^2 integers of the array, presented in row-major order. That is, all numbers in the first row, left to right, then all numbers in the second row, left to right, etc.
     也就是说,是连续的
     */
    
    int arraySize = 0;
    int max = 0;
    
    int getLine(char s[],int lim)
    {
        int c,i;
        for(i = 0;i < lim-1 && (c=getchar()) != '
    ' ;i++){
            s[i] = c;
        }
        
        //如果for结束是因为换行符
        if(c == '
    '){
            s[i] = c;
            ++i;
        }
        
        s[i] = '';//字符串结束符
        return i;//返回字符串的真实长度
    }
    
    void cutToInt(char s[],int rlen){
        int i;
        char sub[rlen];
        int sublen = 0;
        for(i=0;i<rlen+1;i++){
            
            if(s[i] != ' ' && s[i] != ''){
                sub[sublen] = s[i];
                sublen++;
            }else{
                sub[sublen] = '';
                
                int num;
                
                if(sub[0] == '-'){
                    char newSub[sublen-1];
                    int k;
                    for(k=0;k<sublen-2;k++)
                    {
                        newSub[0] = sub[k+1];
                    }
                    newSub[sublen-2] = '';
                    
                    num = (-1)*atoi(newSub);
                }else{
                    num = atoi(sub);
                }
                
                
                max = (max > (max+num))?max:(max+num);
                
                arraySize++;
                
                //清空sub
                int j;
                for(j=0;j<sublen;j++){
                    sub[j] = '	';
                }
                sublen = 0;
            }
        }
    }
    
    int main() {
        
        int n;
        char c;
        scanf("%d%c",&n,&c);
        
        while(arraySize < n*n){
            
            char line[MAXLEN];
            int realLen = getLine(line, MAXLEN);
            
            if(realLen > 0){
                cutToInt(line, realLen);
            }
    
        }
        
        printf("%d",max);
        
        return 0;
    }
    //
    //  answer.cpp
    //  poj1050
    //
    //  Created by 韩雪滢 on 10/13/16.
    //  Copyright © 2016 韩雪滢. All rights reserved.
    //
    
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    using namespace std;
    
    #define maxn 105
    #define inf 0x3f3f3f3f
    
    int n, array[maxn][maxn];
    int f[maxn][maxn][maxn];
    
    //之前的代码证明C没学好
    void input()
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                scanf("%d", &array[i][j]);
    }
    
    
    //我未实现的部分:确保是某个子矩阵的和为最大,先 按列i 加 ,再 按行j 加,存储在(列的个数)个矩阵中,行数还是i,列数是k
    //有重复计算,三维矩阵可优化
    int work()
    {
        memset(f, 0, sizeof(f));
        int ret = -inf;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
            {
                int sum = 0;
                for (int k = j; k <= n; k++)
                {
                    sum += array[i][k];
                    f[i][j][k] = max(f[i - 1][j][k] + sum, sum);
                    ret = max(ret, f[i][j][k]);
                }
            }
        return ret;
    }
    
    int main()
    {
        input();
        printf("%d
    ", work());
        return 0;
    }
  • 相关阅读:
    《网络对抗》 后门原理与实践
    《网络对抗》 逆向及Bof进阶实践
    20145211黄志远《网络对抗》Exp9 Web安全基础实践
    20145211 《网络对抗》Exp8 Web基础
    20145211黄志远 《网络对抗》Exp7 网络欺诈技术防范
    20145211MSF基础应用实验
    20145211黄志远 《网络对抗技术》 恶意代码分析
    20145211黄志远 《网络对抗技术》 免杀原理与实践
    20145211黄志远 《网络对抗技术》 后门原理与实践
    20145211《网络对抗》注入Shellcode并执行&&Return-to-libc攻击
  • 原文地址:https://www.cnblogs.com/HackHer/p/5958131.html
Copyright © 2020-2023  润新知