欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 学习总结2.14

学习总结2.14

2025/2/21 3:23:58 来源:https://blog.csdn.net/2403_89464659/article/details/145640294  浏览:    关键词:学习总结2.14

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

#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背包

#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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词