学习总结2.14

深搜将题目分配,如果是两个题目,就可以出现左左,左右,右左,右右四种时间分配,再在其中找最小值,即是两脑共同处理的最小值

cs 复制代码
#include <stdio.h>
int s[4];
int sum=0;
int brain[25][25];
int min=999;
int left=0,right=0;
void dfs(int x,int y){
    if(y>s[x]){//如果当前这套题目已经被复习完
        if(max(left,right)<min) min=max(left,right);//更新最小值
        return;
    }else{
        left+=brain[x][y];//左脑处理
        dfs(x,y+1);//递归
        left-=brain[x][y];//回溯
        
        right+=brain[x][y];//右脑处理
        dfs(x,y+1);//递归
        right-=brain[x][y];//回溯
    }
}
int max(int a,int b){
    return (a>b)?a:b;
}
int main()
{
    for(int i=1;i<=4;i++){
        scanf("%d",&s[i]);
    }
    for(int i=1;i<=4;i++){
        left=0,right=0;
        min=999;//初始化
        for(int j=1;j<=s[i];j++){
            scanf("%d",&brain[i][j]);
        }
        dfs(i,1);
        sum+=min;
    }
    printf("%d\n",sum);
    return 0;
}

比较简单的dp01背包

cs 复制代码
#include <stdio.h>
int dp[205][205]={0};
int n,m,t;
int a[205],b[205];
int max(int a,int b){
    return (a>b)?a:b;
}
int main()
{
    scanf("%d %d %d",&n,&m,&t);
    for(int i=1;i<=n;i++){
        scanf("%d %d",&a[i],&b[i]);
    }
    for(int i=1;i<=n;i++){
        for(int j=m;j>=a[i];j--){
            for(int k=t;k>=b[i];k--){
                dp[j][k]=max(dp[j][k],dp[j-a[i]][k-b[i]]+1);
            }
        }
    }
    printf("%d\n",dp[m][t]);
    return 0;
}
相关推荐
知识分享小能手4 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao7 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾7 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT7 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa8 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落9 小时前
Python学习之装饰器
开发语言·python·学习
speop10 小时前
llm的一点学习笔记
笔记·学习
非凡ghost10 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
ue星空10 小时前
月2期学习笔记
学习·游戏·ue5
萧邀人10 小时前
第二课、熟悉Cocos Creator 编辑器界面
学习