在delphi中,怎样声明一个包含十个点坐标的常量数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在delphi中,怎样声明一个包含十个点坐标的常量数组?相关的知识,希望对你有一定的参考价值。
ConstC_Point : Array [0..2] of TPoint =((X:10;Y:20),(X:20;Y:30),(X:20;Y:50)); //举例:3个
procedure TForm1.FormCreate(Sender: TObject);
Var
P:Tpoint;
begin
P := C_Point[0];//提取方法的一种
end; 参考技术A const
zuobiao : array[1..10]of array[1..2]of integer=
((1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10));
//label1.Caption:=inttostr(zuobiao[1,1]);调用第一个点的x坐标
//label1.Caption:=inttostr(zuobiao[1,2]);调用第一个点的y坐标 参考技术B const
C_x : array[1..10] of integer=(1,2,3,4,5,6,7,8,9,10);//x坐标
C_y : array[1..10] of integer=(1,2,3,4,5,6,7,8,9,10);//y坐标
JZOJ 1385. 直角三角形
题目
分析
- 首先,我们肯定要两两枚举
- 然后,我们需要知道斜率
- 在坐标系中 一次函数 y=kx k就是斜率
- 二次函数 y=kx+b k也是斜率
- 因为直角三角形两边斜率相乘是-1
- 根据这个性质我们可以知道构成三角形是斜率相等但在不同象限的点
- 所以我们就求斜率相同的点
- 然后我们就可以有一个排序来优化
- 相同的斜率的一定在一起
- 答案就是讲相邻两象限的相同斜率的点乘起来再相加
代码
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 long long x[10010],y[10001]; 5 struct sb 6 7 long long x,y,xx; 8 tmp[10001]; 9 void turn(int p) 10 11 swap(tmp[p].x,tmp[p].y); 12 tmp[p].y=-tmp[p].y; 13 tmp[p].xx=(tmp[p].xx+1)%4; 14 15 bool cmp(sb a,sb b) 16 17 return a.x*b.y>b.x*a.y; 18 19 int cnt; 20 int main () 21 22 int n; 23 cin>>n; 24 for (int i=1;i<=n;i++) cin>>x[i]>>y[i]; 25 for (int i=1;i<=n;i++) 26 27 for (int j=1;j<=n;j++) 28 29 tmp[j].x=x[j]-x[i]; 30 tmp[j].y=y[j]-y[i]; 31 tmp[j].xx=0; 32 if (i==j) 33 34 tmp[j].x=tmp[1].x; 35 tmp[j].y=tmp[1].y; 36 tmp[j].xx=tmp[1].xx; 37 38 else 39 while (tmp[j].x<=0||tmp[j].y<0) turn(j); 40 41 sort(tmp+2,tmp+n+1,cmp); 42 int j=2; 43 while (j<=n) 44 45 int ans[4]=0; 46 int k=j; 47 while (k<=n&&tmp[j].x*tmp[k].y==tmp[k].x*tmp[j].y) 48 ans[tmp[k].xx]++,k++; 49 for (int kk=0;kk<=3;kk++) 50 cnt+=ans[kk]*ans[(kk+1)%4]; 51 j=k; 52 53 54 cout<<cnt; 55
以上是关于在delphi中,怎样声明一个包含十个点坐标的常量数组?的主要内容,如果未能解决你的问题,请参考以下文章