蒟蒻求救
查看原帖
蒟蒻求救
643013
gmy_coding楼主2022/8/16 16:46
#include<stdio.h>
#include<stdlib.h>
int a[1000][12000],b[1000][2],c[1000],n,s,x,i,j;
int min(int a,int b)
{ 
    return a<b?a:b;
}
int main()
{
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&b[i][0],&b[i][1]);
    }
    for(i=1;i<=n;i++)
    {
        c[i]=b[i][0]-b[i][1];
    }
    for(i=0;i<=n;i++)
    {
        for(j=0;j<=12000;j++)
        {
            a[i][j]=n+1;
        }
    }
    a[0][6000]=0;
    for(i=1;i<=n;i++)
    {
        for(j=0;j<=12000;j++)
        {
        	if((min(a[i-1][j-c[i]],a[i-1][j+c[i]]))==n+1) continue;
            if(a[i-1][j-c[i]]<(a[i-1][j+c[i]]+1))
            {
                a[i][j]=a[i-1][j-c[i]];
            }
            else
            {
                a[i][j]=a[i-1][j+c[i]]+1;
            }
        }
    }
    i=6000;
    while(a[n][i]==n+1)
    {
        i--;
    }
    j=6000;
    while(a[n][j]==n+1)
    {
        j++;
    }
    if(6000-i<j-6000)
    {
    	printf("%d",a[n][i]);
    }
    else if(j-6000<6000-i) 
    {
        printf("%d",a[n][j]);
    }
    else
    {
    	printf("%d",min(a[n][i],a[n][j]));
    }
}

72分 救救孩子(本人14岁

2022/8/16 16:46
加载中...