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

回答編集履歴

1

修正

2020/07/24 23:40

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -8,11 +8,9 @@
8
8
  int main() {
9
9
  using namespace std;
10
10
 
11
- // row行 col列 の神経衰弱
12
11
  int row = 6;
13
12
  int col = 8;
14
13
  assert( row*col % 2 == 0 );
15
-
16
14
  int num = row * col / 2;
17
15
  int* data = new int[num*2];
18
16
  // 「0~num-1 で埋める」を二回やって
@@ -22,15 +20,10 @@
22
20
  shuffle(data, data+num*2, random_device());
23
21
 
24
22
  // row行col列の行列を用意して、ナカミをdataで埋める
25
- int i = 0;
26
23
  int** matrix = new int* [row];
27
24
  for ( int r = 0; r < row; ++r ) {
28
- matrix[r] = new int [col];
25
+ matrix[r] = data + r*col;
29
- for ( int c = 0; c < col; ++c ) {
30
- matrix[r][c] = data[i++];
31
- }
32
26
  }
33
- delete[] data; // dataは用済み
34
27
 
35
28
  // できたかな
36
29
  for (int r = 0; r < row; ++r) {
@@ -41,9 +34,7 @@
41
34
  }
42
35
 
43
36
  // あとしまつ
44
- for (int r = 0; r < row; ++r) {
45
- delete[] matrix[r];
46
- }
47
37
  delete[] matrix;
38
+ delete[] data;
48
39
  }
49
40
  ```