-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2-2.cpp
More file actions
53 lines (53 loc) · 1.28 KB
/
Copy path2-2.cpp
File metadata and controls
53 lines (53 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <bits/stdc++.h>
using namespace std;
int tile=0;
void chessBoard( int tr, int tc, int dr, int dc, int size, vector< vector<int>> &Board){
if (size==1){
return;
}
int t=++tile;
int s=size>>1;
if (dr < tr + s && dc < tc + s){
chessBoard(tr,tc,dr,dc,s,Board);
}
else{
Board[tr+s-1][tc+s-1]=t;
chessBoard(tr,tc,tr+s-1,tc+s-1,s,Board);
}
if (dr < tr + s && dc >= tc + s){
chessBoard(tr,tc+s,dr,dc,s,Board);
}
else{
Board[tr+s-1][tc+s]=t;
chessBoard(tr,tc+s,tr+s-1,tc+s,s,Board);
}
if (dr >= tr + s && dc < tc +s){
chessBoard(tr+s,tc,dr,dc,s,Board);
}
else{
Board[tr+s][tc+s-1]=t;
chessBoard(tr+s,tc,tr+s,tc+s-1,s,Board);
}
if (dr >= tr + s && dc >= tc + s){
chessBoard(tr+s,tc+s,dr,dc,s,Board);
}
else{
Board[tr+s][tc+s]=t;
chessBoard(tr+s,tc+s,tr+s,tc+s,s,Board);
}
}
int main(){
int n;
cin>>n;
vector< vector<int>> Board(n, vector<int>(n, 0));
int dr,dc;
cin>>dr>>dc;
chessBoard(0,0,dr,dc,n,Board);
for (auto it = Board.begin();it != Board.end();it++){
for (auto it2 = (*it).begin();it2!=(*it).end();it2++){
cout<<*it2<<"\t";
}
cout<<endl;
}
return 0;
}