#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[101][101],b[101][101];
void print(int i,int j)
{
int n;
if (i>0)
{
n=i;
while (b[i][n]!=j)
{
n++;
}
print(i-1,j-a[i][n]);
cout<<n<<" ";
}
}
int max(int a,int b){
return a>b?a:b;
}
int main(){
int f,v;
scanf("%d%d",&f,&v);
for(int i=1;i<=f;i++)
for(int j=1;j<=v;j++)
scanf("%d",&a[i][j]);
memset(b,128,sizeof(b));
for(int i=0;i<101;i++)
b[0][i]=0;
for(int i=1;i<=f;i++)
for(int j=i;j<=v-f+i;j++){
for(int k=i;k<=j;k++)
b[i][j]=max(b[i][j],b[i-1][k-1]+a[i][k]);
}
int c=-1000000;
for(int i=f;i<=v;i++)
if(b[f][i]>c)
c=b[f][i];
printf("%d/n",c);
print(f,c);
return 0;
}
IOI99第一天第一题
最新推荐文章于 2018-08-13 17:21:11 发布