有大佬可以帮我看看这是什么问题吗
查看原帖
有大佬可以帮我看看这是什么问题吗
276303
初十三楼主2020/12/16 17:04
#include<bits/stdc++.h>
using namespace std;

int a[1005],b[1005][1005];
int s;
int dp(int s)
{
	int sum=0;
	for(int i=1;i<s;i++)
	{
		if(s%i==0)
		sum+=i;
	}
	return sum;
}
int main()
{
	
	cin >> s;
	memset(b,0,sizeof(b));
	for(int i=1;i<=s;i++)
	{
		a[i]=dp(i);
	}
	for(int i=1;i<=s;i++)
	{
		for(int j=1;j<=s;j++)
		{
//			b[j]=max(b[j],b[j-i]+a[i]);
			if(i+j<=s&&i!=j)
			{
				if(j==1)
				b[i][j]=max(b[i][j],a[i]+a[j]);//若为一行的第一个则与自身比较 
				else
				b[i][j]=max(b[i][j-1],a[i]+a[j]);
			}
			else
			{
				if(j==1)
				continue;
				b[i][j]=b[i][j-1];
			}
//			cout<<b[i][j]<<" ";
		}
//		cout << endl;
		b[i+1][1]=b[i][s];//接替下一行的第一个 
	}
	cout << b[s][s];
	return 0;
 } 

救急救急

2020/12/16 17:04
加载中...