二维背包10分,大佬们看看
查看原帖
二维背包10分,大佬们看看
396613
机智的娃楼主2021/8/26 14:58

一直找不出错


代码

#include<bits/stdc++.h>
using namespace std;
int a[1010][1010];
int ys(int a){
	int ans;
	for(int i=1;i<a;i++){
		if(a%i==0){
			ans=ans+i;
		}
	}
	return ans;
}
int main(){
	int s;cin>>s;
	int zl[s+1],jz[s+1];
	for(int i=1;i<=s;i++){
		if(i==1){
			jz[i]=0;
			zl[i]=1;
		}else{
		jz[i]=ys(i);
		zl[i]=i;
		}
		//cout<<"价值:"<<jz[i]; 
		//cout<<"重量:"<<zl[i]<<endl;
	}
	for(int i=1;i<=s;i++){
		for(int j=1;j<=s;j++){
			if(j>=zl[i]){
				a[i][j]=max(a[i-1][j-zl[i]]+jz[i],a[i-1][j]);
			}else a[i][j]=a[i-1][j];
		}
	}
	cout<<a[s][s];
	return 0;
}


2021/8/26 14:58
加载中...