欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POJ 1717 Dominoes G++ 动态规划 背

程序员文章站 2022-07-15 11:02:40
...

POJ 1717 Dominoes G++ 动态规划 背

POJ 1717 Dominoes G++ 动态规划 背

POJ 1717 Dominoes G++ 动态规划 背

#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;
}