POJ1948 Triangular Pastures(01背包)
来源:互联网 发布:php开源b2c商城 编辑:程序博客网 时间:2024/05/16 14:45
题意:
输入一些栏杆,可以相互拼接,要求拼成一个面积最大的三角形
要点:
已知三角形三边可以用海伦公式计算三角形面积:S=√[p(p-a)(p-b)(p-c)],p=(a+b+c)/2。因为总长确定,所以确定两条边就可以知道第三条边,用背包的思路,dp[i][j]为1,表示从这些线段中可以组成一个边长为i,另一边为j的三角形;为0则表示不能。这里的二维相当于三维降一维以节约内存空间。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){int n,i,j,k;int len[45];bool dp[800][800];//dp[i][j]存是否能拼成长度为i和j的两个边while (scanf("%d", &n) != EOF){int sum = 0;for (i = 0; i < n; i++){scanf("%d", &len[i]);sum += len[i];}int v = sum / 2;//边长最长总长的一半memset(dp, false, sizeof(dp));dp[0][0] = true;for (i = 0; i < n; i++)for (j = v; j >= 0; j--)for (k = v; k >= 0; k--){if ((dp[j - len[i]][k] && j >= len[i]) || (k >= len[i] && dp[j][k - len[i]]))//注意数组下标>=0dp[j][k] = true;//如果前面j-len[i]或k-len[i]可以拼成,现在第i个栏杆加入就可以拼成}int max = -1;for (i = 1; i <= v; i++)for (j = 1; j <= v;j++)if (dp[i][j] && i + j>sum - i - j){k = sum - i - j;if (i + j > k&&i + k > j&&j + k > i)//三角形两边之和大于第三边{double p = sum / 2.0;int s = (int)(sqrt(p*(p - i)*(p - j)*(p - k)) * 100);//最后输出截尾整数if (s > max)max = s;}}if (max)printf("%d\n", max);elseprintf("-1\n");}return 0;}
0 0
- POJ1948 Triangular Pastures(01背包)
- POJ1948:Triangular Pastures(二维01背包)
- poj1948 Triangular Pastures(背包)
- 【POJ1948】Triangular Pastures(背包)
- [POJ1948]Triangular Pastures(背包dp)
- poj1948 Triangular Pastures
- POJ1948:Triangular Pastures
- dp poj1948 Triangular Pastures
- POJ1948 Triangular Pastures(DP)
- poj1948[USACO2002,Feb]Triangular Pastures三角牧场
- poj 1948 Triangular Pastures 01背包
- poj 1948 Triangular Pastures(二维01背包)
- poj 1948 Triangular Pastures 二维01背包
- POJ 1948 Triangular Pastures(01背包)
- poj 1948 Triangular Pastures 二维01背包
- pku 1948 Triangular Pastures(背包)
- poj 1948 Triangular Pastures (dp 二维01背包)
- poj 1948 Triangular Pastures(01背包+暴力)
- cocos2d-x 菜鸟实习生学习篇(二)helloworld完全注释
- git基本操作
- 机器视觉(Machine Vision)学习博客导引
- java设计模式——结构型之装饰模式
- 5.实现
- POJ1948 Triangular Pastures(01背包)
- java 厨师,顾客,订餐的多线程示例程序
- BestCoder Round #75 King's Cake 模拟&&优化 || gcd
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
- 计算机网络----- 协议层次
- 上楼梯(递归+记忆化)
- 【杂】零散的截图笔记
- HDU 5641 国王的手机 king's phone
- ireport使用图片制作复选框,并将图片设置相对路径放在项目中