当前位置:编程学习 > C/C++ >>

rnqoj-72-拔河比赛

记录状态
 
#include<stdio.h>  
#include<string.h>  
#include<iostream>  
#include<algorithm>  
using namespace std;  
#define INF 99999999  
int dp[10001][101];  
int t[10001][101];  
int main()  
{  
    int n,i,j,k;  
    int a[101];  
    int s=0;  
    scanf("%d",&n);  
    for(i=1;i<=n;i++)scanf("%d",&a[i]),s+=a[i];;  
    memset(dp,-1,sizeof(dp));  
    dp[0][0]=0;  
    for(i=1;i<=n;i++)  
    {  
        for(j=s;j>=a[i];j--)  
        {  
            for(k=n;k>=1;k--)  
            {  
                if(j-a[i]>0&&k==1)continue;  
                if(dp[j-a[i]][k-1]!=-1)  
                {  
                    dp[j][k]=dp[j-a[i]][k-1]+1;  
                    t[j][k]=1;  
                }  
            }  
        }  
    }  
    for(i=s/2;i<=s;i++)  
    {  
        for(j=0;j<=n;j++)  
            if(dp[i][j]!=-1)  
            {  
                cout<<((2*i-s)>0?(2*i-s):(s-2*i))<<endl;  
                break;  
            }  
        if(j!=n+1)break;  
    }  
    return 0;  
}  

 


补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,