zoukankan      html  css  js  c++  java
  • Algorithm --> 爬楼梯求最大分数

    爬楼梯求最大分数

    如下图,最大分数是: 10+20+25+20=75.

          

    要求:

    1、每次只能走一步或者两步;

    2、不能连续三步走一样的,即最多连续走两次一步,或者连续走两次两步;

    3、必须走到最后一层台阶。

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    #define MAX 301
    #define max(a, b) ((a) > (b) ? (a) : (b))
    
    int Answer, N;
    int stairs[MAX];
    int dp[MAX];
    
    int main( int argc, char** argv )
    {
        int T, test_case;
    
    
        freopen( "input_climingstairs.txt", "r", stdin );
    
        cin >> T;
        for( test_case = 0; test_case  < T; test_case++ )
        {
            Answer = 0;
    
            cin >> N;
    
            memset( dp, 0, sizeof( dp ) );
    
            for( int i = 1; i <= N; i++ )
            {
                cin >> stairs[i];
            }
    
            dp[0] = 0;
            dp[1] = stairs[1];
            dp[2] = stairs[2] + dp[1];
            for( int j = 3; j <= N; j++ )
            {
                dp[j] = max( dp[j-2], dp[j-3] + stairs[j-1] ) + stairs[j];
            }
    
            Answer = dp[N];
    
            cout << Answer << endl;
        }
    
        return 0;
    }

    输入文件:

    5
    7
    13
    1
    15
    27
    29
    21
    20
    16
    72
    28
    39
    27
    38
    8
    97
    16
    72
    58
    45
    58
    85
    41
    83
    30
    25
    200
    132
    114
    24
    190
    110
    10
    56
    64
    59
    77
    176
    133
    155
    109
    187
    70
    29
    26
    87
    193
    7
    153
    199
    53
    40
    192
    96
    124
    136
    158
    11
    5
    155
    176
    171
    150
    174
    7
    149
    127
    127
    68
    173
    134
    186
    180
    46
    92
    77
    60
    182
    168
    139
    39
    104
    139
    198
    158
    30
    38
    162
    31
    102
    89
    56
    60
    565
    657
    63
    611
    477
    329
    43
    195
    462
    455
    610
    332
    456
    186
    455
    134
    38
    66
    232
    786
    528
    277
    662
    275
    402
    98
    723
    492
    654
    373
    717
    492
    238
    411
    554
    104
    252
    102
    548
    136
    693
    723
    311
    325
    763
    457
    600
    624
    651
    549
    393
    311
    79
    212
    426
    420
    116
    160
    242
    422
    View Code
  • 相关阅读:
    Mysql基本操作
    MySql架构
    并发中关键字的语义
    SpringMVC<一> 基本结构与配置
    Tomcat 顶层结构
    Linux 日常常用指令
    JSON 数据格式
    RMAN 增量备份级别说明
    Oracle常用数据库系统表单以及SQL的整理
    使用puTTY或Xshell连接阿里云TimeOut超时
  • 原文地址:https://www.cnblogs.com/jeakeven/p/4788686.html
Copyright © 2011-2022 走看看