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];
}
相关推荐
C++ 老炮儿的技术栈2 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
AI科技星3 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
参.商.3 小时前
【Day41】143. 重排链表
leetcode·golang
always_TT5 小时前
C语言中的字符与字符串(char数组)
c语言·开发语言
forAllforMe5 小时前
LAN9252 从机寄存器配置--C语言举例
c语言·开发语言
17(无规则自律)5 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·c语言·驱动开发·嵌入式硬件
weixin_537590455 小时前
《C程序设计语言》练习答案(练习1-4)
c语言·开发语言
Zaly.6 小时前
【Python刷题】LeetCode 1727 重新排列后的最大子矩阵
算法·leetcode·矩阵
炸膛坦客6 小时前
单片机/C/C++八股:(十五)内存对齐、结构体内存对齐
c语言·开发语言·单片机
老约家的可汗6 小时前
C/C++内存管理探秘:从内存分布到new/delete的底层原理
c语言·c++