码迷,mamicode.com
首页 > 其他好文 > 详细

hdu5305RUN(正方形判定)

时间:2015-08-10 16:08:16      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

提示:水题,主要是明白正方形判断的条件,这一点如果糊涂了就会有很多遗漏的地方

正方形的判断条件是:4条边长相等,两条对角线相等

对此,通用的方法是求6条两两顶点间的距离,排序之后判断是否各自相等

Run

 
 Accepts: 126
 
 Submissions: 558
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
小花是一个热爱健身的姑娘,这天她下载了一个跑步软件,这个软件可以记录下小花跑步的轨迹。小花决定去公园跑步。公园里有许许多多的座椅,小花希望在一些座椅休息一下,并且她在两条座椅之间只跑直线。小花是一个完美主义者,她希望自己最后的轨迹是一个正三边形或者正四边形或者正五边形或者正六边形。小花会从某条座椅开始打开跑步软件,并在回到这个座椅后关闭。
请问小花有多少种跑法。注:若两种跑法经过的座椅集合相同则认为是一种跑法。且经过一条座椅时没有必要一定停下来
输入描述
输入有多组数据
每组数据第一行为一个n(1 < = n < = 20)表示座椅数量
接下来n行,每行两个整数xi,yi(0 < = xi,yi < = 8)表示座椅的坐标
输出描述
输出方案数
输入样例
4
0 0
0 1
1 0
1 1
输出样例
1

 

技术分享
 1 #include<cstdio>
 2 #include<map>
 3 #include<queue>
 4 #include<stack>
 5 #include<vector>
 6 #include<algorithm>
 7 #include<cstring>
 8 #include<cmath>
 9 #include<iostream>
10 #include<set>
11 #include<stdlib.h>
12 using namespace std;
13 struct Node{
14     int x;
15     int y;
16 }a[25];
17 int dis(int x1,int y1,int x2,int y2)
18 {
19     return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
20 }
21 int main()
22 {
23     int n;
24     while(cin>>n)
25     {
26         for(int i=0;i<n;i++)
27         {
28             cin>>a[i].x>>a[i].y;
29         }
30         int sum=0;
31         for(int i=0;i<n-3;i++)
32         {
33             for(int j=i+1;j<n-2;j++)
34             {
35                 for(int p=j+1;p<n-1;p++)
36                 {
37                     for(int q=p+1;q<n;q++)
38                     {
39                         int b[6];
40                         int t=0;
41                         b[t++]=dis(a[i].x,a[i].y,a[j].x,a[j].y);
42                         b[t++]=dis(a[i].x,a[i].y,a[p].x,a[p].y);
43                         b[t++]=dis(a[i].x,a[i].y,a[q].x,a[q].y);
44                         b[t++]=dis(a[p].x,a[p].y,a[j].x,a[j].y);
45                         b[t++]=dis(a[q].x,a[q].y,a[j].x,a[j].y);
46                         b[t++]=dis(a[p].x,a[p].y,a[q].x,a[q].y);
47                         sort(b,b+t);
48 //                        //for(int k=0;k<t;k++)
49 //                        {
50 //                            cout<<b[k]<<" ";
51 //                        }
52                         if(b[0]==b[1]&&b[1]==b[2]&&b[2]==b[3]&&b[5]==b[4])
53                         {
54                             sum++;
55                         }
56                     }
57                 }
58             }
59             
60         }
61         cout<<sum<<endl;
62     }
63     return 0;
64 }
View Code

 

hdu5305RUN(正方形判定)

标签:

原文地址:http://www.cnblogs.com/sunshiniing/p/4718238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!