分类目录归档:🐌 · 开发

背包问题 🎒

九种背包问题

01背包问题

一种物品只能放入背包或者不放入,不可分割,只考虑物品体积不考虑物品质量,体积有限的背包如何携带价值做多的物品

AcWing题目地址

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/**
 * f[i][j]表示只看前i个物品,总体积是j的情况下,总价值最大是多少
 * 1. 不选第i个物品 f[i][j] = f[i-1][j]
 * 2. 选第i个物品 f[i][j] = f[i-1][j-volume[i]] + value[i] 
 * f[i][j] = max(1,2);
 * f[0][0] = 0;
 */
int bag(int *volumes, int *values, int capacity);

int main(const int argc, const char **argv) {
    int size, capacity;
    while (scanf("%d %d",&size,&capacity)!=EOF) {
        /**
         * 数组第一个元素保存数组长度
         */
        int *volumes = (int *) calloc(size+1, sizeof(int));
        int *values = (int *) calloc(size+1, sizeof(int));
        values[0] = volumes[0] = size;
        for (int i=1;i<=size;i++) scanf("%d %d",volumes+i,values+i);
        int ret = bag(volumes,values,capacity);
        printf("%d\n",ret);
        free(volumes);
        free(values);
    }
    return 0;
}

int bag(int *volumes, int *values, int capacity) {
    int length = volumes[0];
    int **bags = (int **) calloc(length+1, sizeof(int *));
    for (int i=0;i<=length;i++) bags[i] = (int *) calloc(capacity+1, sizeof(int));
    bags[0][0] = 0;
    for (int i=1;i<=length;i++) {
        for (int j=0;j<=capacity;j++) {
            /**
             * 第i个物品是否放入背包,如果不放入背包
             */
            bags[i][j] = bags[i-1][j];
            /**
             * 第i个物品体积小于背包剩余体积,才能放入背包
             */
            if (j>=volumes[i]) 
                bags[i][j] = fmax(bags[i][j],bags[i-1][j-volumes[i]]+values[i]);
        }
    }
    int ret = 0;
    for (int i=0;i<=capacity;i++) ret = fmax(bags[length][i],ret);
    for (int i=0;i<length;i++) free(bags[i]);
    free(bags);
    return ret;
}

继续阅读

iOS固件提取资源 ⛲️

最近在制作字体模块,需要提取iOS14内置的一些资源

首先用BetterZip打开下载的iOS固件,iOS固件可以在这个网站上面下载

打开以后,选择最大的dmg文件,右键将其挂在到Finder

像这样

等待解压完毕,挂载成功,就可以在Finder中看到这个分区文件了,和访问手机根目录结构一样

安卓存储 (概述) 🐚

原文
鱼香肉丝 译 :emoji-a0001:

数据和文件存储预览

安卓系统使用的文件系统与其他平台上面基于磁盘的文件系统十分类似, 系统提供了几种选项让你能够保存你的程序的数据

  • 应用程序特别存储(App-specific storage): 无论是存储在内部存储设备的专用目录,还是外部设备的其它目录,存储的文件只有你的程序可以使用。使用内部存储来其它程序不应该访问的存储敏感信息
  • 共享存储(Shared storage): 存放一些你的程序想要分享给其它程序的数据,包括媒体,文档和其它类型的文件
  • 偏好(Preferences): 通过键值对形式存放私有的原始的数据
  • 数据库(Database): 使用Room这个持久化类来存储私有的原始的结构化数据

继续阅读

利用OneDrive打造个人专属云盘 🎒

前言

OneDrive 有分商业版、教育版和个人版,比较常见的是个人版和商业版,教育版凭教育邮箱就可以获得。由于是存放个人文件,并且和用来同步保存自己服务器上面的文件,我就没有使用学校 🏫的教育邮箱(主要是这教育邮箱的号改不了昵称和头像 👥), 我个人的 OneDrive 只有 15 个 G,容量是相当有限,所以,我这里使用的是 Office 开发者E3版本 并且是可以续订的,可以分配 25 个许可证,免费使用 Office365 ,OneDrive 基本不用担心容量,不过我还是给每个用户分配了 1T 的存储空间。:emoji-d006d:

继续阅读

系统 IO 🥰

第六题:

#include "csapp.h"

int main(int argc, char *argv[])
{
    int fd1, fd2, fd3;
    char *fname = argv[1];
    fd1 = Open(fname, O_CREAT|O_TRUNC|O_RDWR, S_IRUSR|S_IWUSR);
    Write(fd1, "pqrs", 4);    

    fd3 = Open(fname, O_APPEND|O_WRONLY, 0);
    Write(fd3, "jklmn", 5);
    fd2 = dup(fd1);  /* Allocates new descriptor */
    Write(fd2, "wxyz", 4);
    Write(fd3, "ef", 2);

    Close(fd1);
    Close(fd2);
    Close(fd3);
    return 0;
}

继续阅读

安卓开发 👒

Gradle

使用 Gradle 来管理依赖,由于国内的网络环境,所以建议换成阿里的 Maven 仓库:

    repositories {
        maven { url "https://maven.aliyun.com/repository/google" }
        maven { url "https://maven.aliyun.com/repository/jcenter" }
        google()
        jcenter()

    }

继续阅读