POJ 1717 Dominoes G++ 动态规划 背
程序员文章站
2022-07-15 11:02:40
...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
//英语 看博友分析 抄博友程序 动态规划 背
int up[1008];
int down[1008];
int dp[1008][12000];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>up[i]>>down[i];
}
memset(dp,0x3f,sizeof(dp));
//dp[0][6000]=0;//抄博友程序
int cha=up[1]-down[1];
dp[1][cha+6000]=0;
dp[1][6000-cha]=1;
for(int i=2;i<=n;i++)
{
for(int j=0;j<=12000;j++)
{
cha=up[i]-down[i];
if(j-cha>=0)
{
dp[i][j]=min(dp[i][j],dp[i-1][j-cha]);//抄博友程序
}
if(j+cha<=12000)
{
dp[i][j]=min(dp[i][j],dp[i-1][j+cha]+1);
}
}
}
for(int i=0;i<=6000;i++)
{
int ans=min(dp[n][i+6000],dp[n][6000-i]);
if(ans<1000)
{
cout<<ans<<endl;
break;
}
}
return 0;
}