andre_joy

导航

USACO transform

题意:将转换前字符串经过题目给出的7种方式转换成转换后的字符串。注意5是前三种跟第四种结合。

mark:模拟一下就ok了~

代码:

/*
ID: andre_j2
LANG: C
TASK: transform
*/
#include <stdio.h>
#include <string.h>

int i,j;

int pp(char a[][15], char b[][15], int n)
{
    int i;
    for(i = 0; i < n; i++)
        if(strcmp(a[i], b[i])) return 0;
    return 1;
}

void zh1(char a[][15], char c[][15], int n)
{
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            c[j][n-1-i] = a[i][j];
        c[i][n] = '\0';
    }
}

void zh2(char a[][15], char c[][15], int n)
{
    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            c[n-1-i][n-1-j] = a[i][j];
}

void zh3(char a[][15], char c[][15], int n)
{
    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            c[n-1-j][i] = a[i][j];
}

void zh4(char a[][15], char c[][15], int n)
{
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n/2; j++)
            c[i][n-1-j] = a[i][j];
        for(; j < n; j++)
            c[i][n-1-j] = a[i][j];
        c[i][n] = '\0';
    }
}

main () {
    freopen("transform.in", "r", stdin);
    freopen("transform.out", "w", stdout);
    int k,n,flag;
    char a[15][15],b[15][15],c[15][15],d[15][15];
    scanf("%d", &n);
    for(i = 0; i < n; i++)
        scanf("%s", a[i]);
    for(i = 0 ; i < n; i++)
        scanf("%s", b[i]);
    flag = 0;
    for(k = 1; k < 8; k++)
    {
        if(flag) break;
        switch(k)
        {
        case 1:
            zh1(a, c, n);
            if(pp(b, c, n)) {printf("1\n");flag = 1;}
            break;
        case 2:
            zh2(a, c, n);
            if(pp(b, c, n)) {printf("2\n");flag = 1;}
            break;
        case 3:
            zh3(a, c, n);
            if(pp(b, c, n)) {printf("3\n");flag = 1;}
            break;
        case 4:
            zh4(a, c, n);
            if(pp(b, c, n)) {printf("4\n");flag = 1;}
            break;
        case 5:
            zh1(a, c, n);
            zh4(c, d, n);
            if(pp(b, d, n)) {printf("5\n");flag = 1;break;}
            zh2(a, c, n);
            zh4(c, d, n);
            if(pp(b, d, n)) {printf("5\n");flag = 1;break;}
            zh3(a, c, n);
            zh4(c, d, n);
            if(pp(b, d, n)) {printf("5\n");flag = 1;break;}
        case 6:
            if(pp(a, b, n)) {printf("6\n");flag = 1;}
            break;
        case 7:
            printf("7\n");
        }
    }
    exit (0);
}

posted on 2012-07-09 10:50  andre_joy  阅读(134)  评论(0编辑  收藏  举报