teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

解決しました

2021/01/28 01:34

投稿

katkey
katkey

スコア15

title CHANGED
File without changes
body CHANGED
@@ -127,11 +127,10 @@
127
127
  if(r[d[count]][d[count+1]]==0) a[d[count]][d[count+1]]=stop;
128
128
  printf("r[%d][%d]:%d\n",d[count],d[count+1],r[d[count]][d[count+1]]);
129
129
  }
130
- hantei(s,t,N);
130
+ hantei(s,t,N);//1回目はだいだいこの部分にたどり着く
131
- return 1;
131
+ return 1;//このreturnが必要
132
132
  }
133
133
  ```
134
134
  ###追記
135
135
  回答ありがとうございました。
136
- 最初にhanteiを呼び出したときに、return文を下につけておかなかったことで、判定終了して再帰関数で戻ったときに、hantei関数が終了しなかったのが原因だったようです。
136
+ 最初にhanteiを呼び出したときに、return文を下につけておかなかったことで、判定終了して再帰関数で戻ったときに、hantei関数が終了しなかったのが原因だったようです。
137
- ベストアンサーは一番わかりやすかった人とさせていただきます。

2

解決しました

2021/01/28 01:34

投稿

katkey
katkey

スコア15

title CHANGED
File without changes
body CHANGED
@@ -130,4 +130,8 @@
130
130
  hantei(s,t,N);
131
131
  return 1;
132
132
  }
133
- ```
133
+ ```
134
+ ###追記
135
+ 回答ありがとうございました。
136
+ 最初にhanteiを呼び出したときに、return文を下につけておかなかったことで、判定終了して再帰関数で戻ったときに、hantei関数が終了しなかったのが原因だったようです。
137
+ ベストアンサーは一番わかりやすかった人とさせていただきます。

1

プログラムを修正しました。

2021/01/28 01:31

投稿

katkey
katkey

スコア15

title CHANGED
File without changes
body CHANGED
@@ -17,35 +17,34 @@
17
17
  #define nonvisit 0
18
18
  #define revisit 2
19
19
  #define stop 2
20
- #define M 5
21
- #define N 10
20
+ #define M 100
22
21
 
23
22
  int i,j,k,min,sum;
24
23
  clock_t start_clock, end_clock;
25
- int a[N+1][N+1], r[N+1][N+1], d[N+1], v[N+1], f[N+1];
24
+ int a[M+1][M+1], r[M+1][M+1], d[M+1], v[M+1];
26
25
 
27
- void ransuu();
26
+ void ransuu(int);
28
27
 
29
- int hantei(int, int);
28
+ int hantei(int, int, int);
30
29
 
31
30
  int main(void){
32
31
  srand((unsigned int)time(NULL));
33
- int sum2,b[M];
32
+ int sum2,b[M+1];
34
33
  for(int n=1;n<=M;n++){
35
34
  start_clock=0,end_clock=0;
36
35
  printf("%d回目\n",n);
37
- ransuu();
36
+ ransuu(n);
38
37
  start_clock=clock();
39
- hantei(1,n);
38
+ hantei(1,n,n);
40
39
  end_clock=clock();
41
- b[N]=(double)(end_clock-start_clock)/CLOCKS_PER_SEC;
40
+ b[n]=(double)(end_clock-start_clock)/CLOCKS_PER_SEC;
42
- sum2+=b[N];
41
+ sum2+=b[n];
43
42
  }
44
43
  printf("平均時間計算量:%f\n",sum2/M);
45
44
  return 0;
46
45
  }
47
46
 
48
- void ransuu(void){
47
+ void ransuu(int N){
49
48
  printf("Adjacency Matrix:\n");
50
49
 
51
50
  for(i = 1; i <= N; i++){
@@ -71,7 +70,7 @@
71
70
  }
72
71
  }
73
72
 
74
- int hantei(int s,int t){
73
+ int hantei(int s,int t,int N){
75
74
  int current, count, p=0;
76
75
  current=s; count=1; min=N+1;
77
76
 
@@ -128,7 +127,7 @@
128
127
  if(r[d[count]][d[count+1]]==0) a[d[count]][d[count+1]]=stop;
129
128
  printf("r[%d][%d]:%d\n",d[count],d[count+1],r[d[count]][d[count+1]]);
130
129
  }
131
- hantei(s,t);
130
+ hantei(s,t,N);
132
131
  return 1;
133
132
  }
134
133
  ```