hdu4082 Hou Yi's secret--相似三角形个数
来源:互联网 发布:thinkphp简单商城源码 编辑:程序博客网 时间:2024/06/16 12:58
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4082
一:分析
有两个注意点:1.重点
2.三点一线不能是三角形
最后题目要求是求出相似三角形的个数,就是假如现在只能凑出5个三角形,分别命名为t1,t2,,,t5。其中t1与t2相似,剩下三个互相相似,那么答案是输出3,而不是2+3=5。
二:AC代码
#define _CRT_SECURE_NO_DEPRECATE #include<iostream>#include<cmath>#include<algorithm>using namespace std;struct Point{double x,y;};struct Triangle{double len[3];};Point point[20];Triangle tri[20 * 20 * 20];int isLine(Point p1, Point p2, Point p3){return (p2.x - p1.x)*(p3.y - p1.y) - (p3.x - p1.x)*(p2.y - p1.y) == 0;}double dis(Point p1, Point p2){return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));}bool isSimilar(Triangle t1, Triangle t2){if ((fabs(t1.len[0] * t2.len[1] - t1.len[1] * t2.len[0]) < 1e-8)&&(fabs(t1.len[0] * t2.len[2] - t1.len[2] * t2.len[0]) < 1e-8)&&(fabs(t1.len[1] * t2.len[2] - t1.len[2] * t2.len[1]) < 1e-8))return true;return false;}int main(){int n;//排除重复点,实际有多少点while (~scanf("%d", &n) && n){for (int i = 0; i < n; i++){scanf("%lf%lf", &point[i].x, &point[i].y);for (int j = 0; j < i; j++){if (point[j].x == point[i].x&&point[j].y == point[i].y){i--;n--;break;}}}if (n < 3){printf("0\n");continue;}//这里是不能的,因为3点可能一线,那么答案是0,而不是1/*if (n == 3){printf("1\n");continue;}*/int cnt = 0;//有多少个三角形for (int i = 0; i < n; i++){for (int j = i + 1; j < n; j++){for (int k = j + 1; k < n; k++){if (!isLine(point[i], point[j], point[k])){tri[cnt].len[0] = dis(point[i], point[j]);tri[cnt].len[1] = dis(point[i], point[k]);tri[cnt].len[2] = dis(point[j], point[k]);sort(tri[cnt].len, tri[cnt].len + 3);cnt++;}}}}int ans = 0;for (int i = 0; i < cnt; i++){int t = 1;for (int j = i + 1; j < cnt; j++)if (isSimilar(tri[i], tri[j]))t++;ans = max(ans, t);}printf("%d\n", ans);}return 0;}
1 0
- hdu4082 Hou Yi's secret--相似三角形个数
- hdu4082 Hou Yi's secret(相似三角形)
- hdu4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret-求相似三角形的最大个数-(坑货)
- hdu 4082 Hou Yi's secret 统计相似三角形 暴力
- HDU4082Hou Yi's secret(相似三角形的个数)
- HDU 4082 Hou Yi's secret 伪相似三角形 && 2011 Asia Beijing Regional Contest
- HDU 4082 Hou Yi's secret(相似三角形最大数量)
- Hou Yi's secret(hdu4082——2011icpc北京站B题)
- HDU 4082Hou Yi's secret2011北京现场赛B题(统计相似三角形个数)
- Hou Yi's secret(UVALive
- HDU4082(相似三角形的个数)
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- hdu 4082 Hou Yi's secret
- HDU - 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- WebViewJavascriptBridge 原理分析
- Struts2常见错误。
- 静态方法(类方法)与非静态方法(成员方法/实例方法)
- iOS中WebKit框架应用与解析
- 从数据库中查找头像并显示
- hdu4082 Hou Yi's secret--相似三角形个数
- java 堆排序实现
- 模拟器动画变慢
- 道德经
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- mysql5.5等版本如何启用SSL
- LeetCode-86:Partition List
- 数据结构实验之栈一:进制转换
- vim的保存文件和退出命令