USACO 1.2 Transformations (模拟)

来源:互联网 发布:可以买药送药的软件 编辑:程序博客网 时间:2024/06/11 03:34

模拟题目,按照题目给定的要求变换图形即可,变换的优先级依次减小。这个题目我写的很乱。不过最还还是勉强可以运行

/*  ID:twd30651  PROG:transform  LANG:C++*/#include<iostream>#include<fstream>#include<stdlib.h>#include<string.h>using namespace std;#define MAX 10char a[MAX][MAX];char b[MAX][MAX];char c[MAX][MAX];char t[MAX][MAX];int N;int flag=0;int check(){    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            if(b[i][j]!=t[i][j])return 0;        }    return 1;}void do1(char a[][MAX],char b[][MAX],int f)//f是个标志,标志是第五个操作调用的,还是直接调用的{    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            b[j][N-i-1]=a[i][j];        }    if(!f&&check()){printf("1\n");        flag=1;    }}void do2(char a[][MAX],char b[][MAX],int f)//同理{    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            b[N-i-1][N-j-1]=a[i][j];        }    if(!f&&check()){        printf("2\n");        flag=1;    }}void do3(char a[][MAX],char b[][MAX],int f)//同理{    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            b[N-j-1][i]=a[i][j];        }    if(!f&&check()){        printf("3\n");        flag=1;    }}void do4(char a[][MAX],char b[][MAX]){    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            b[i][N-j-1]=a[i][j];        }    if(check()){        printf("4\n");        flag=1;    }}void do5(char a[][MAX],char b[][MAX]){    do4(a,c);    for(int i=0;i<3;++i)    {        if(i==0)        {            do1(c,b,1);            if(check()){printf("5\n");                flag=1;            }        }        else if(i==1)        {            do2(c,b,1);            if(check()){printf("5\n");                flag=1;}        }        else        {            do3(c,b,1);            if(check()){printf("5\n");                flag=1;}        }    }}void do6(char a[][MAX],char b[][MAX]){    for(int i=0;i<N;++i)        for(int j=0;j<N;++j)        {            b[i][j]=a[i][j];        }    if(check())    {        printf("6\n");        flag=1;    }}int main(int argc,char *argv[]){    freopen("transform.in","r",stdin);    freopen("transform.out","w",stdout);    memset(a,0,sizeof(a));    memset(b,0,sizeof(b));    memset(c,0,sizeof(c));    scanf("%d",&N);    for(int i=0;i<N;++i)        scanf("%s",a[i]);    for(int i=0;i<N;++i)        scanf("%s",t[i]);    for(int i=1;i<=7;++i)    {        switch(i)        {        case 1:            if(flag==0)                do1(a,b,0);            break;        case 2:            if(flag==0)                do2(a,b,0);            break;        case 3:            if(flag==0)                do3(a,b,0);            break;        case 4:            if(flag==0)                do4(a,b);            break;        case 5:            if(flag==0)                do5(a,b);            break;        case 6:            if(flag==0)                do6(a,b);            break;        case 7:            if(flag==0)            printf("7\n");            break;        }    }    return 0;}


0 0
原创粉丝点击