您的位置:首页 > 其它

uva 10306 e-Coins(二维完全背包)

2014-06-27 21:34 525 查看
dp已经够暴力了,不要怕去暴力

#include<stdio.h>
#include<string.h>
#define MAXN 305
#define INF 0x7ffffff
int dp[MAXN][MAXN];
struct node
{
int x,y;
}coins[45];
int min(int a,int b) {return a<b?a:b;}
int main()
{
int cas;
int n,s;
scanf("%d",&cas);
while(cas--)
{
scanf("%d%d",&n,&s);
for(int i=0;i<n;i++)
scanf("%d%d",&coins[i].x,&coins[i].y);
for(int i=0;i<=s;i++)
for(int j=0;j<=s;j++)
dp[i][j]=INF;
dp[0][0]=0;
for(int i=0;i<n;i++)
for(int x=coins[i].x;x<=s;x++)
for(int y=coins[i].y;y<=s;y++)
dp[x][y]=min(dp[x][y],dp[x-coins[i].x][y-coins[i].y]+1);
int ans=INF;
for(int i=0;i<=s;i++)
for(int j=0;j<=s;j++)
if(i*i+j*j==s*s)
ans=min(ans,dp[i][j]);
if(ans==INF) printf("not possible\n");
else printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dp 二维完全背包