矩形翻转

来源:互联网 发布:哥本哈根协议 知乎 编辑:程序博客网 时间:2024/04/29 03:19

一个矩形,如果四个角都标上数字,要得通过旋转,翻转等操作后的所有结果,只需要连续做对称翻转和上下翻转就可以了。
如题目:
http://hihocoder.com/problemset/problem/1268

#include <cstdio>#include <algorithm>#include <cstring>#define rep(i, s, e) for (int i= s; i< e; i++)int G[4][4];int org[3][3] = {4, 9, 2, 3,5,7,8,1,6};int a[9][3][3];int main(){//freopen("in.txt", "r", stdin);    rep(i, 0, 3) rep(j, 0, 3) a[0][i][j] = org[i][j];    rep(i, 1, 8)    {        if (i%2){            rep(j, 0, 3)                rep(k, 0, 3)                    a[i][j][k] = a[i-1][k][j];        }        else{            rep(j, 0, 3)                rep(k, 0, 3)                    a[i][j][k] = a[i-1][j][2-k];        }    }   rep(i, 0, 3)        rep(j, 0, 3)    {        scanf("%d", &G[i][j]);    }    int ans = -1;    int ansNum = 0;    rep(i, 0, 8)    {        bool flag = true;        rep(j, 0, 3) rep(k, 0, 3)            {                if (G[j][k] != 0 && G[j][k] != a[i][j][k])                    flag = false;            }        if (flag)        {            ansNum++;            ans = i;        }    }    if (ansNum > 1)        printf("Too Many\n");    else{        rep(i, 0, 3)        {            rep(j, 0, 3)                printf("%d ", a[ans][i][j]);            printf("\n");        }    }}
0 0
原创粉丝点击