Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * @author voltage
- */
- #include <stdio.h>
- #include <math.h>
- typedef struct arr_2d{
- private:
- int *mh;
- int n,m;
- public:
- arr_2d(int n, int m){
- this->n = n; this->m = m;
- this->mh = new int[n*m];
- };
- arr_2d(const arr_2d &a){
- this->n = a.n; this->m = a.m;
- this->mh = new int[n*m];
- for(int i=0; i<n*m; i++)
- this->mh[i] = a.mh[i];
- }
- ~arr_2d(){
- delete this->mh;
- };
- int &e(int i, int j){
- return mh[i*m + j];
- }
- int h(){ return this->n; }
- int w(){ return this->m; }
- } vert_mx;
- vert_mx c(int d){
- if(d==0){
- vert_mx m(1,1);
- m.e(0,0) = 0;
- return m;
- }
- vert_mx p = c(d-1);
- bool o = (d%2) > 0;
- int v = o ? p.h() * 2 : p.h();
- int h = o ? p.w() : p.w() * 2;
- vert_mx m(v,h);
- for(int l=0; l<p.h(); l++)
- for(int k=0; k<p.w(); k++)
- m.e(l,k) = p.e(l,k);
- if(o){
- for(int i=v-1; i>=p.h(); i--)
- for(int j=0; j<p.w(); j++)
- m.e(i,j) = m.e(v-i-1,j) + int(pow(2,d-1));
- }else{
- for(int i=0; i<p.h(); i++)
- for(int j=h-1; j>=p.w(); j--)
- m.e(i,j) = m.e(i,h-j-1) + int(pow(2,d-1));
- }
- return m;
- }
- int main(){
- int n;
- printf("n = ");
- scanf("%d",&n);
- vert_mx m = c(n);
- for(int i=0; i<m.h(); i++){
- for(int j=0; j<m.w(); j++)
- printf("%-5d ",m.e(i,j));
- putchar('\n');
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment