質問編集履歴

3

ソースコードを更新

2020/02/17 18:07

投稿

Magolors
Magolors

スコア21

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,19 @@
12
12
 
13
13
  ```C++
14
14
 
15
- #include <bits/stdc++.h>
15
+ #include <iostream>
16
+
17
+ #include <queue>
18
+
19
+ #include <vector>
20
+
21
+ #include <algorithm>
22
+
23
+ #include <cmath>
24
+
25
+ #include <iomanip>
26
+
27
+
16
28
 
17
29
  using namespace std;
18
30
 
@@ -30,17 +42,13 @@
30
42
 
31
43
  do {
32
44
 
33
- l = p.front(); p.pop();//辺の左端
45
+ l = p.front(); p.pop();
34
46
 
35
- r = p.front(); p.pop();//辺の右端
47
+ r = p.front(); p.pop();
36
48
 
37
- long double theta = atan2(r.second-l.second, r.first-l.first);//辺の角度
49
+ long double theta = atan2(r.second-l.second, r.first-l.first);
38
50
 
39
- long double leng = sqrt((r.second-l.second)*(r.second-l.second)+(r.first-l.first)*(r.first-l.first));//辺の長さ
51
+ long double leng = sqrt((r.second-l.second)*(r.second-l.second)+(r.first-l.first)*(r.first-l.first));
40
-
41
-
42
-
43
- //点の設定
44
52
 
45
53
  p.push(l);
46
54
 
@@ -48,11 +56,17 @@
48
56
 
49
57
  p.push(temp);
50
58
 
59
+ p.push(temp);
60
+
51
61
  temp = make_pair(l.first+(r.first-l.first)/2.0+leng*h*sin(theta)/3.0, l.second+(r.second-l.second)/2.0+leng*h*cos(theta)/3.0);
52
62
 
53
63
  p.push(temp);
54
64
 
65
+ p.push(temp);
66
+
55
67
  temp = make_pair(l.first+2*(r.first-l.first)/3.0, l.second+2*(r.second-l.second)/3.0);
68
+
69
+ p.push(temp);
56
70
 
57
71
  p.push(temp);
58
72
 
@@ -86,13 +100,19 @@
86
100
 
87
101
  cout << fixed << setprecision(10);
88
102
 
103
+ cout << p.front().first << " " << p.front().second << endl;
104
+
89
- while (!(p.empty())){
105
+ p.pop();
106
+
107
+ do {
90
108
 
91
109
  cout << p.front().first << " " << p.front().second << endl;
92
110
 
93
- p.pop();
111
+ p.pop(); p.pop();
94
112
 
95
- }
113
+ } while (p.front().first != 100);
114
+
115
+ cout << p.front().first << " " << p.front().second << endl;
96
116
 
97
117
  }
98
118
 
@@ -104,42 +124,4 @@
104
124
 
105
125
 
106
126
 
107
- 見直し、条件の変更をしましたが解決しませんでした
127
+ 回答ありがとうございます。ご指摘内容をもとに改善たのですが今度は動作ないようになってしいました。n>=1の入力を仮定しているので、pop()の部分は問題ないと思うのです、なぜ動かないかわかりません。
108
-
109
-
110
-
111
- n=2では以下のようになる必要があります。
112
-
113
- 0.00000000 0.00000000
114
-
115
- 11.11111111 0.00000000
116
-
117
- 16.66666667 9.62250449
118
-
119
- 22.22222222 0.00000000
120
-
121
- 33.33333333 0.00000000
122
-
123
- 38.88888889 9.62250449
124
-
125
- 33.33333333 19.24500897
126
-
127
- 44.44444444 19.24500897
128
-
129
- 50.00000000 28.86751346
130
-
131
- 55.55555556 19.24500897
132
-
133
- 66.66666667 19.24500897
134
-
135
- 61.11111111 9.62250449
136
-
137
- 66.66666667 0.00000000
138
-
139
- 77.77777778 0.00000000
140
-
141
- 83.33333333 9.62250449
142
-
143
- 88.88888889 0.00000000
144
-
145
- 100.00000000 0.00000000

2

実行例の追加

2020/02/17 18:06

投稿

Magolors
Magolors

スコア21

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,41 @@
105
105
 
106
106
 
107
107
  値の見直し、条件の変更をしましたが解決しませんでした。
108
+
109
+
110
+
111
+ n=2では以下のようになる必要があります。
112
+
113
+ 0.00000000 0.00000000
114
+
115
+ 11.11111111 0.00000000
116
+
117
+ 16.66666667 9.62250449
118
+
119
+ 22.22222222 0.00000000
120
+
121
+ 33.33333333 0.00000000
122
+
123
+ 38.88888889 9.62250449
124
+
125
+ 33.33333333 19.24500897
126
+
127
+ 44.44444444 19.24500897
128
+
129
+ 50.00000000 28.86751346
130
+
131
+ 55.55555556 19.24500897
132
+
133
+ 66.66666667 19.24500897
134
+
135
+ 61.11111111 9.62250449
136
+
137
+ 66.66666667 0.00000000
138
+
139
+ 77.77777778 0.00000000
140
+
141
+ 83.33333333 9.62250449
142
+
143
+ 88.88888889 0.00000000
144
+
145
+ 100.00000000 0.00000000

1

再帰が使われていなかった

2020/02/17 15:39

投稿

Magolors
Magolors

スコア21

test CHANGED
@@ -1 +1 @@
1
- 再帰がうまくはたらきません
1
+ キューがうまくはたらきません
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- [コッホ曲線](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/all/ALDS1_5_C)(フラクタル図形を再帰的に求める問題)をキューを用いて解こうとしているのですが、n=2以降うまく働かず困っております。どなたか解決策を教えていただきたいです。
5
+ [コッホ曲線](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/all/ALDS1_5_C)(フラクタル図形を求める問題)をキューを用いて解こうとしているのですが、n=2以降うまく働かず困っております。どなたか解決策を教えていただきたいです。
6
6
 
7
7
 
8
8