|
  
- 帖子
- 5270
- 精华
- 28
- 积分
- 48752
- 鲜花
- 1491 朵
- 主题
- 159 帖
- 来自
- 代数数
       
|
嗯,结果是正确的(程序对所有点用a~t的字母标号,先从上到下,同一行从左到右):- #include <stdio.h>
- #include <assert.h>
- #include <stdlib.h>
- char lines[][5]={
- "acjr",
- "agkp",
- "afis",
- "ahlq",
- "admt",
- "bcde",
- "bgim",
- "bkot",
- "bjps",
- "ehij",
- "elnr",
- "emqs",
- "ckns",
- "dlos",
- "dikr",
- "cilt",
- "dhnp",
- "cgoq",
- "dfgj",
- "cfhm",
- "jklm",
- "mopr",
- "jnqt"
- };
- int x[]={0,-90,-30,30,90,0,-15,15,0,-60,-20,20,60,-15,15,-30,30,-120,0,120};
- int y[]={120,90,90,90,90,80,75,75,72,60,60,60,60,45,45,30,30,0,0,0};
- void check_line(int k)
- {
- int xx[4],yy[4];
- int dx,dy;
- int i;
- for(i=0;i<4;i++){
- xx[i]=x[lines[k][i]-'a'];
- yy[i]=y[lines[k][i]-'a'];
- }
- dx=xx[1]-xx[0];
- dy=yy[1]-yy[0];
- for(i=1;i<3;i++){
- int ldx,ldy;
- ldy=yy[i+1]-yy[i];
- ldx=xx[i+1]-xx[i];
- if(ldx*dy!=ldy*dx){
- fprintf(stderr,"Not a line for %s\n",lines[k]);
- }
- }
- }
- int main()
- {
- int i,j;
- assert(sizeof(lines)/sizeof(lines[0])==23);
- assert(sizeof(x)/sizeof(x[0])==20);
- assert(sizeof(y)/sizeof(y[0])==20);
- for(i=0;i<23;i++){
- for(j=i+1;j<23;j++){///Check not same lines
- int k;
- for(k=0;k<4;k++){
- if(lines[i][k]!=lines[j][k])
- break;
- }
- if(k==4){
- fprintf(stderr,"lines[%d]==lines[%d]=%s\n",i,j,lines[i]);
- exit(-1);
- }
- for(k=0;k<4;k++){
- if(lines[i][k]!=lines[i][3-k])
- break;
- }
- if(k==4){
- fprintf(stderr,"lines[%d]==lines[%d]=%s\n",i,j,lines[i]);
- exit(-1);
- }
- }
- }
- for(i=0;i<23;i++){
- check_line(i);
- }
- return 0;
- }
复制代码
|
|