http://poj.org/problem?id=1948..二维01背包。。
来源:互联网 发布:ubuntu怎么复制文件夹 编辑:程序博客网 时间:2024/06/06 14:07
http://http://poj.org/problem?id=1948
题意:题目给出n 个数、依次为a[i],,是有N块长为a[i]的木板,要求围成三角形, 并且要求三角形的面积最大。并且在最后面积*100.
具体思路:首先要求怎样利用这木板,并且让他们怎样组合,并且组合肯定有好多组合,因此在判断出组合后,还得依次标记一下,等到接下来求面积是判断。
思路基本就这样,因此就是要求出怎样的组合。。这里可以联想到背包,因为每条边的长度不可能超过周长的一半,依次可以利用二维i数组存储下来其中两条边的数据。这样依次来就可以得出各种组合,并且把存在的组合标记下来。接下来就是面积,具体见代码:
#include<iostream>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>#include<cstdio>using namespace std;#define maxn 801#define man 40int dp[maxn][maxn];int a[man];int n,sum,av;int main(){ int i,j,k; while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); dp[0][0]=1; sum=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } av=sum/2; for(i=0;i<n;i++) { for(j=av;j>=0;j--) { for(k=j;k>=0;k--) { if((j>=a[i]&&dp[k][j-a[i]])||(k>=a[i]&&dp[k-a[i]][j]))//判断可以满足条件的长度。如何的组合! dp[k][j]=1; } } } int ans=-1; for(i=av;i>=1;i--)//i可以等于0,, { for(j=i;j>=1;j--)//j也可以等于0.。为了减少时间! { if(dp[j][i]) { int c=sum-i-j; if(i+j>c&&j+c>i&&c+i>j)//判断可以组成三角形!! { double p=(i+j+c)*1.0/2; int s=(int)(sqrt(p*(p-i)*(p-j)*(p-c))*100); if(ans<s) ans=s; } } } } if(ans) { printf("%d\n",ans); } else printf("-1\n"); } return 0;}
- http://poj.org/problem?id=1948..二维01背包。。
- http://poj.org/problem?id=1195二维树状数组
- http://poj.org/problem?id=1014 多重背包转化成01背包
- http://poj.org/problem?id=2965
- http://poj.org/problem?id=2075
- http://poj.org/problem?id=1125
- http://poj.org/problem?id=2983
- http://poj.org/problem?id=2406
- http://poj.org/problem?id=1961
- http://poj.org/problem?id=1486
- http://poj.org/problem?id=1062
- http://poj.org/problem?id=2983
- http://poj.org/problem?id=3159
- http://poj.org/problem?id=1201
- http://poj.org/problem?id=3259
- http://poj.org/problem?id=3233
- http://poj.org/problem?id=1273
- http://poj.org/problem?id=3281
- iOS开发 粗解UIDynamicAnimator
- 程序员应对面试的好东西
- 转:模拟银行输入密码操作
- ANY比较符用法
- WINCE 下实现类TransparenBlt 的BMP 透明色显示功能
- http://poj.org/problem?id=1948..二维01背包。。
- spring-security学习笔记--配置文件
- DWR全面详细解析
- 转: 数组 接收整数序列
- Firefly架设部署
- Smart Client Software Factory 模块说明(上)
- IColor 的RGBA定义颜色 (colorWithRed)
- 转:定义一个数组days,将其初始化今年每月的天数,编写一段程序,将每月的天数打印出来, 分类: c语言经典题
- 段错误 (core dumped) 之 core文件