随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M

虽然是水题,恰巧写一下这种类似背包输出具体方案的

输出有多解,无语

#include <iostream>
 #include <cstring>
 #include <algorithm> 
 using namespace std;
  const int N=100;
  int n,m,f[N][N],a[N][N];
  int b[N];
  void solve(){
  	int i,j,k;
  	for(i=1;i<=n;i++)
  	 for(j=1;j<=m;j++)
  	  cin>>a[i][j];
  	  
  	for(i=1;i<=n;i++)
  	 for(j=1;j<=m;j++)
  	 	for(k=0;k<=j;k++)
  	 		f[i][j]=max(f[i][j],f[i-1][j-k]+a[i][k]);
	cout<<f[n][m]<<endl;
	
	j=m;
	for(i=n;i>=1;i--){
		for(k=j;k>=0;k--)
		if(f[i][j]==f[i-1][j-k]+a[i][k]){ b[i]=k; j-=k;break; }
	}
	for(i=1;i<=n;i++) cout<<i<<' '<<b[i]<<endl;
  }
 main(){
 	cin>>n>>m;
 	solve();
 }

posted on   towboat  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示