USACO Transformations

来源:互联网 发布:类似无心法师的网络剧 编辑:程序博客网 时间:2024/05/22 03:03
/*ID:fan19132LANG:C++TASK:transform*/#include"iostream"#include"stdio.h"#include"stdlib.h"#include"string.h"int n;char a[11][11],b[11][11],c[11][11];intcheck(){    for(int i=0;i<n;i++){        for(int j=0;j<n;j++)            if(b[i][j]!=c[i][j]) return 0;    }    return 1;}int main(){    FILE *in,*out;    in = fopen("transform.in","r");    out = fopen("transform.out","w");    fscanf(in,"%d",&n);    for(int i=0;i<n;i++)        fscanf(in,"%s",a[i]);    //printf("\n");    for(int i=0;i<n;i++)        fscanf(in,"%s",c[i]);    //printf("\n");    int flag = 0;    int ans = 0;    if(!flag)    {        for(int i=0;i<n;i++)        {            for(int j=0;j<n;j++)            {                b[i][j] = a[n-j-1][i];                //printf("%c",b[i][j]);            }            //printf("\n");        }        flag = check();        ans = 1;    }    if(!flag)    {        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)            b[i][j]=a[n-i-1][n-j-1];        flag = check();        ans = 2;    }    if(!flag)    {        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)            b[i][j]=a[j][n-i-1];        flag = check();        ans = 3;    }    if(!flag)    {        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)            b[i][j]=a[i][n-j-1];        flag = check();        ans = 4;    }    while(!flag){        char mid[11][11];        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                mid[i][j]=a[i][n-j-1];        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                b[i][j] = mid[n-j-1][i];        flag = check();        if(flag) {ans = 5;break;}        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                b[i][j]=mid[n-i-1][n-j-1];        flag = check();        if(flag) {ans = 5;break;}        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                b[i][j]=mid[j][n-i-1];        flag = check();        if(flag) {ans = 5;}        break;    }    if(!flag){        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                b[i][j] = a[i][j];        flag = check();        ans = 6;    }    if(!flag){        ans = 7;    }    fprintf(out,"%d\n",ans);    return 0;}

0 0