C语言 | Leetcode C语言题解之第375题猜数字大小II

题目:

题解:

cpp 复制代码
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>
#include <limits.h>

#define MMAX(a, b)        ((a) > (b)? (a) : (b))
#define MMIN(a, b)        ((a) < (b)? (a) : (b))

#define MAX_LEN     1000

int dp[MAX_LEN][MAX_LEN];

//【算法思路】分组DP。
int getMoneyAmount(int n){
    if(n == 1) {
        return 0;
    }

    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            dp[i][j] = 0;
        }
    }

    for(int gap = 0; gap < n; gap++) {
        for(int i = 0; i + gap < n; i++) {
            int j = i + gap;

            if(gap == 0) {
                dp[i][j] = 0;
                continue;
            }

            int min = MMIN(i + 1 + dp[i + 1][j], j + 1 + dp[i][j - 1]);

            for(int k = i + 1; k < j; k++) {
                min = MMIN(min, k + 1 + MMAX(dp[i][k - 1], dp[k + 1][j]));
            }

            dp[i][j] = min;
        }
    }
/*
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            printf("dp[%d, %d] = %d     ", i, j, dp[i][j]);
        }
        printf("\n");
    }
*/
    return dp[0][n - 1];
}
相关推荐
Sumerking36 分钟前
llc_control.c 专项评审(v3 更新版)
c语言·开发语言·算法·obc
L小航呀1 小时前
代码随想录刷题 Day16
leetcode·面试
软行1 小时前
LeetCode 每日一题 3876. 构造奇偶一致的数组 II
c++·算法·leetcode
繁星蓝雨1 小时前
C++设计原理———重载(extern “C“的由来、顺序依赖、语义依赖、overload、名称修饰符、对象操作、运算符重载、新增运算符、枚举和布尔类型)
c语言·c++·extern c·overload·重载·语义依赖·顺序依赖
我不会起名字3222 小时前
一天一道算法题(29):单调栈
java·数据结构·python·算法·leetcode·golang·单调栈
SuperByteMaster2 小时前
编译器将unsigned short 整体提升int和unsigned short 在内存中的分配2byte的理解
c语言
苦瓜小生2 小时前
【前端】【力扣与手撕】十天带你刷完前端算法与手撕,全是最简单好记的最优解法!day4
前端·数据结构·算法·leetcode·面试
圣保罗的大教堂3 小时前
leetcode 2029. 石子游戏 IX 中等
leetcode
XiaoQiao6669993 小时前
C 语言常用头文件及里面核心函数
c语言·开发语言
博界IT精灵4 小时前
C语言中的数据类型及其转换
c语言·开发语言