ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构1 - 06-图2 Saving James Bond - Easy Version

2020-04-04 21:09:13  阅读:267  来源: 互联网

标签:Saving struct int James void pos read Version MAXN


 

 

 1 #include<stdio.h>
 2 #include<math.h>
 3 #define MAXN 102
 4 struct pos{
 5     int x,y;
 6 };
 7 struct pos p[MAXN];
 8 int n,d,flag;
 9 int g[MAXN][MAXN],vis[MAXN];
10 double dis(struct pos p1,struct pos p2);
11 void read();
12 void creatg();
13 void dfs(int x);
14 int main(){
15     flag=0;
16     read();
17     creatg();    
18     dfs(0);
19     if(flag==1) printf("Yes\n");
20     else printf("No\n");
21     return 0;
22 }
23 void read(){
24     int i;
25     scanf("%d %d",&n,&d);
26     for(i=1;i<=n;i++) scanf("%d %d",&p[i].x,&p[i].y);
27     for(i=0;i<=n+1;i++) vis[i] = 0;
28 }
29 double dis(struct pos p1,struct pos p2){
30     double t1 = pow((p1.x-p2.x),2) +  pow((p1.y-p2.y),2);
31     return sqrt(t1);
32 }
33 void creatg(){
34     int i,j;
35     struct pos o;
36     o.x = 0;
37     o.y = 0;
38     for(i=0;i<=n+1;i++)
39       for(j=0;j<=n+1;j++)
40          g[i][j] = 0;
41          
42     for(i=1;i<=n;i++){
43         if((dis(o,p[i])-15/2.0)<=d){
44         //if((dis(o,p[i]))<=d){
45             g[0][i] = 1;
46             g[i][0] = 1;
47         }
48         else {
49             g[0][i]=0;
50             g[i][0]=0;    
51         }
52         
53         if((50-abs(p[i].x))<=d || ((50-abs(p[i].y))<=d)) {
54             //可达
55             g[n+1][i] = 1;
56             g[i][n+1] = 1; 
57         }
58         else{
59             g[n+1][i]=0;
60             g[i][n+1]=0;
61         }
62     }
63     for(i=1;i<=n;i++){
64         for(j=1;j<=n;j++){
65             if(i==j){
66                 g[i][j] = 0;
67                 g[j][i] = 0;
68             }
69             else{
70                 if(dis(p[i],p[j])<=d){
71                     g[i][j] = 1;
72                     g[j][i] = 1;
73                 }
74                 else {
75                     g[i][j] = 0;
76                     g[j][i] = 0;    
77                 }
78             }
79         }
80     }
81     
82 
83 }
84 void dfs(int x){
85     vis[x] = 1;
86     //printf("%d\n",x); 
87     if(x==n+1) flag=1;
88     int i;
89     for(i=1;i<=n+1;i++){
90         if(i!=x&&vis[i]==0&&g[x][i]!=0) dfs(i);
91     }
92 }
View Code

 

标签:Saving,struct,int,James,void,pos,read,Version,MAXN
来源: https://www.cnblogs.com/Learn-Excel/p/12634121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有